如何使用Apache Beam在Python中将有界pcollection转换为无界?

时间:2018-08-17 17:40:18

标签: python google-cloud-dataflow apache-beam

我试图在不使用过多内存的情况下转换存储在GCS中的数TB的邮件日志。

按照guide中的建议,我将时间戳记添加到每个元素,将其拆分到一个滑动窗口中,并且在将其发送到GroupByKey和{ {1}}之后的解析器。应该可以,但是ParDo仍在等待所有数据到达。 为什么?

我也尝试过Direct和Google Dataflow运行程序。

我想念什么?

这是代码的要点:

GroupByKey

1 个答案:

答案 0 :(得分:1)

default trigger要求整个数据集在处理之前可用,这就是为什么它等待所有数据到达的原因。

尝试使用Data-driven触发器或Processing time triggers

此外,SlidingWindows主要用于运行平均值,并且由于您仅添加时间戳,因此单个全局窗口可能是更好的选择。

编辑

关于窗口,您可以拥有一个流作业,该流作业可以创建pcollection from in-memory数据,并可以从GCS存储中进行侧面输入。