0

无论如何在批处理模式下运行时触发窗口的早期输​​出?我已经使用 Dataflow 运行器尝试了许多触发器以获得早期窗口输出,但它们始终保持到处理结束。

4

2 回答 2

3

与流式处理不同,Dataflow 批处理始终按拓扑顺序(包括 GroupByKey)执行整个(融合)阶段以完成。因此,一旦它在 GBK 之后开始处理键,它总是拥有该键的所有值,并使用键值对调用下游操作一次。Beam 中的触发器是一个窗口的数据可以多快发布的下限,但不强制提前发布(因此命名为After Count、After Watermark 等),因此批处理模型在技术上满足与一次且只有一次“开火”。

在批处理模式下,不可能在 Dataflow(或我知道的任何其他运行器)上获得早期窗口输出。

于 2020-02-13T21:26:44.770 回答
0

这完全取决于您正在执行的操作类型。假设您正在执行聚合操作,在这种情况下它将保留结果,直到数据流的处理步骤结束。否则 Dataflow 将在处理部分完成后立即释放输出,它不会等到完成处理阶段。如果可能,请发布您的代码,以便我可以调试代码部分。

于 2020-02-06T18:35:47.553 回答