【发布时间】:2019-12-14 19:36:19
【问题描述】:
我的用例是我尝试使用 Apache Beam Python SDK 聚合来自 Google PubSub 订阅的数据,时间为 1 小时。我已经像这样配置了我的管道窗口:
beam.WindowInto(
window.FixedWindows(60 * 60, 0),
trigger=AfterWatermark(
early=AfterCount(1),
late=AfterCount(1)),
accumulation_mode=AccumulationMode.ACCUMULATING)
我的问题是每个窗口我应该看到大约 60 条消息,而我最多只能看到 45-46 条,通常低于这个数字。
现在,一些研究让我相信 Beam 可能会丢弃它认为迟到的任何数据,即使我已经以这种方式设置了触发器。 Beam Streaming 文档提到 Beam SDK for Python 目前不支持允许的延迟。 我不清楚它是否不支持设置特定的延迟配置,或者它是否完全丢弃延迟数据.
L.E:我的完整数据集似乎确实存在,但是关于使用 Python SDK 在 Beam 中处理后期数据的一些说明将有助于设定预期。
【问题讨论】:
-
“如果我以这种方式设置触发器”是什么意思?
-
我的意思是我将窗口触发器设置为在每个早期和晚期事件之后触发。虽然我仍然不能 100% 确定 Beam for Python 如何处理数据延迟,但我的问题有所不同(在下面的答案中指定)。
标签: python-3.x apache-beam google-cloud-pubsub apache-beam-io