Apache Beam 批处理早期输出?

Posted

技术标签:

【中文标题】Apache Beam 批处理早期输出?【英文标题】:Apache Beam batch processing early output? 【发布时间】:2020-02-05 17:46:04 【问题描述】:

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

【问题讨论】:

您能描述一下您的用例吗?很高兴了解为什么输出会一直保留到处理结束。正如@miles212 在***.com/a/60101519/12232504 中所述,这可能取决于您要实现的操作。 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于Apache Beam 批处理早期输出?的主要内容,如果未能解决你的问题,请参考以下文章

Apache Beam 处理文件

Apache Beam 在批处理方面比 Spark/Flink 有啥好处?

Apache Beam,批处理和流式处理的融合!

Apache Beam: 下一代的大数据处理标准

Apache Beam CloudBigtableIO 读/写错误处理

什么是 Apache Beam? [关闭]