我正在努力完成这样的事情: 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读取和写入数据存储之间的速度差异非常大。
这样做的正确方法是什么?我不知道如何接近它。 问候。
答案 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