如何在Beam(Dataflow runner)

时间:2018-02-14 13:25:58

标签: google-cloud-dataflow apache-beam dataflow

我有两个无界的每个,有一个2分钟的窗口和AfterWatermark.pastEndOfWindow()触发器。检查外部联接的结果后,似乎窗口没有对齐。 Beam对齐连接左侧的数据,但在4分钟的重叠间隔内获取右侧数据:

Stream A |--|          (observed range after join from window 1)
            |--|       (observed range after join from window 2)
               |--|    (observed range after join from window 3)
Stream B |----|        (observed range after join from window 1)
            |----|     (observed range after join from window 2)
               |----|  (observed range after join from window 3)

因此,例如,窗口1具有来自流A的事件0-2时间段(如预期的)和来自流B的0-4时间段的事件,并且在窗口2中,我从流A时间段2-获得事件4和流B,时间段2-6。

Beam如何决定数据进入哪个窗口,来自两个未对齐的固定窗口的连接?

1 个答案:

答案 0 :(得分:0)

如果您使用CoGroupByKey加入PCollection s,则beam大致要求它们具有相同的窗口(实际的相等性取决于WindowFn#verifyCompatibility的实现)。因此,您上面提到的情况不会发生。