如何在Apache Flink中使用流实现LEFT OUTER JOIN

时间:2019-07-08 12:47:42

标签: apache-flink flink-streaming

我有左右两个流。 对于同一时间窗口,我们说

  • 左侧流包含元素L1,L2(数字为 键)
  • 右侧流包含元素R1,R3

我想知道如何在Apache Flink中实现LEFT OUTER JOIN,以便在处理此窗口时获得的结果如下:

(L1, R1), (L2, null)

L1,R1通过键(1)匹配,而L2,R3不匹配。包含L2是因为位于左侧

1 个答案:

答案 0 :(得分:1)

好吧,您应该能够使用coGroup运算符并正确实现CoGroupFunction来获得正确的结果。该函数使您可以通过coGroup方法访问整个组。 documentation指出,对于CoGroupFunction,其中一个组可能为空,因此应允许您实施外部联接。唯一的问题是当前在内存中创建了组,因此您需要验证组不会增长得太大,因为它们可以有效地杀死JVM。