2016-07-09 4 views
1

Я с удивлением обнаружил, что нет внешних соединений для DataStream в Flink (DataStream docs).Флинк: нет внешних соединений в DataStream?

Для DataSet у вас есть все возможности: leftOuterJoin, rightOuterJoin и fullOuterJoin, помимо регулярного join (DataSet docs). Но для DataStream у вас просто простое старое соединение.

Это связано с некоторыми фундаментальными свойствами DataStream, которые делают невозможным наличие внешних соединений? Или, может быть, мы можем ожидать этого в будущем (закрытии?)?

Я мог бы использовать внешнее соединение на DataStream для проблемы, над которой я работаю ... Есть ли способ добиться подобного поведения?

ответ

0

Вы можете реализовать внешние соединения, используя преобразование DataStream.coGroup(). A CoGroupFunction получает два итератора (по одному для каждого входа), которые обслуживают все элементы определенного ключа и могут быть пустыми, если не найден соответствующий элемент. Это позволяет реализовать внешние функции соединения.

Первоначальная поддержка внешних соединений может быть добавлена ​​в API DataStream в одном из следующих выпусков Flink. На данный момент я не знаю о таких усилиях. Однако создание проблемы в Apache Flink JIRA может помочь.

+0

Хорошо, я создал проблему, если это поможет: [jira] (https://issues.apache.org/jira/browse/FLINK-4188). Я попробую 'coGroup' :) – houcros