为什么我在apache-beam中的数据是在几分钟后而不是10小时后发出的?

时间:2019-06-21 09:46:45

标签: google-cloud-dataflow apache-beam

我希望有一个全局窗口,该窗口在看到第一个元素后会持续10个小时,但是正在发生的数据在几分钟(或几秒钟)后就会发出。为什么?

代码:

grouped_tis = tracking_informations | beam.WindowInto(window.GlobalWindows(),
                                                        trigger=AfterProcessingTime(10 * 3600),
                                                        accumulation_mode=AccumulationMode.DISCARDING) | beam.GroupByKey() | beam.ParDo(MergeTI())

数据流中30分钟后,我已经收到了很多丢弃的元素:droppedDueToClosedWindow 39,147 GroupByKey

1 个答案:

答案 0 :(得分:1)

这看起来像是SDK中的错误。我已经为Apache Beam Python SDK开发人员创建了a jira ticket,以调查该问题。

似乎AfterProcessingTime提前触发,并导致窗口关闭。由于关闭了窗口,以后发生的所有事件都将被正确丢弃。