如何从PCollection Apache Beam Python创建N个元素组

时间:2018-03-26 15:36:12

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

我正在努力完成这样的事情: Batch PCollection in Beam/Dataflow

上面链接的答案是Java,而我正在使用的语言是Python。因此,我需要一些帮助来获得类似的结构。

具体来说,我有这个:

 p = beam.Pipeline (options = pipeline_options)
 lines = p | 'File reading' >> ReadFromText (known_args.input)

在此之后,我需要创建另一个PCollection但是有List N行“行”,因为我的用例需要一组行。我无法逐行操作。

我尝试了一个ParDo函数,使用变量计数与计数器N行相关联,使用groupBy后使用Map。但是每1000条记录重置一次,所以这不是我要找的解决方案。我在链接中阅读了这个例子,但我不知道如何在Python中做这样的事情。

我尝试在Datastore中保存计数器,但是,Dataflow读取和写入数据存储之间的速度差异非常大。

这样做的正确方法是什么?我不知道如何接近它。 问候。

1 个答案:

答案 0 :(得分:3)

假设分组顺序不重要,您可以在 | 0.1 0.2 0.3 | | -1.2 -0.1 | | -0.3 | T = | 0.4 0.7 0.3 | --> S = | | , R = | | | 0.5 0.1 0.4 | | 0.1 -0.6 | | -0.3 | | 0.205479 | --> Q = | | , P3 = 0.260274 | 0.534247 | 内进行分组。

DoFn