2016-07-09 6 views
1

Ich war überrascht, dass es keine äußeren Verbindungen für DataStream in Flink (DataStream docs) gibt.Flink: keine äußeren Joins auf DataStream?

Für DataSet Sie haben alle Möglichkeiten: leftOuterJoin, rightOuterJoin und fullOuterJoin, abgesehen von den regulären join (DataSet docs). Aber für DataStream haben Sie einfach die einfache alte Join.

Liegt das an einigen grundlegenden Eigenschaften der DataStream, die es unmöglich machen, äußere Verbindungen zu haben? Oder können wir das in der (nahen?) Zukunft erwarten?

Ich könnte wirklich eine Outer Join auf DataStream für das Problem, das ich arbeite ... verwenden Gibt es eine Möglichkeit, ein ähnliches Verhalten zu erreichen?

Antwort

0

Sie können Outer-Joins mithilfe der DataStream.coGroup()-Umwandlung implementieren. A CoGroupFunction empfängt zwei Iteratoren (einen für jeden Eingang), die alle Elemente eines bestimmten Schlüssels bedienen und die leer sein können, wenn kein übereinstimmendes Element gefunden wird. Dies ermöglicht die Implementierung der Outer-Join-Funktionalität.

First-Class-Unterstützung für Outer-Joins könnte der DataStream-API in einer der nächsten Versionen von Flink hinzugefügt werden. Mir sind solche Bemühungen im Moment nicht bekannt. Das Erstellen eines Problems in Apache Flink JIRA könnte jedoch helfen.

+0

In Ordnung, ich habe das Problem erstellt, wenn das hilft: [jira] (https://issues.apache.org/jira/browse/FLINK-4188). Ich werde die 'coGroup' ausprobieren :) – houcros