python - Python Apache Beam,固定 Windows 究竟是如何工作的?
问题描述
我正在使用 SubPub 将数据发布到 BEAM。我一直在尝试使用 60 秒间隔的固定窗口,但是当我发布数据时,数据会立即打印在我的屏幕上。它不应该只每 60 秒打印一次吗?
代码是这样的:
objects = lines | 'Ex' >> beam.ParDo(ExtractorAndCounter())
windowed_lines = (
objects
| beam.WindowInto(window.FixedWindows(60))
| 'print' >> beam.Map(print))
而 ExtractorAndCounter 是一个简单的解析器,仅此而已。
解决方案
在梁模型中,PCollection 的窗口函数(示例中的固定窗口)在“下次应用分组变换时”使用。例如 GroupByKey 或 Combine。Map 是元素方面的,而不是分组变换。
以下链接的第 7.1 节中有一些很好的信息。