给定一个相对较小的数据源(3,000-10,000)的键/值对,我试图只处理符合组阈值(50-100)的记录。所以最简单的方法是将它们按键,过滤和展开进行分组 - 无论是使用FlatMap还是ParDo。迄今为止,最大的团体只有1,500条记录。但这似乎是Google Cloud Dataflow生产中的一个严重瓶颈。为什么Apache Beam中的GroupByKey之后的FlatMap如此之慢?
随着给定的列表
(1,1) (1,2) (1,3) ... (2,1) (2,2) (2,3) ...
通过键变换集过滤和组的运行:
p | 'Group' >> beam.GroupByKey()
| 'Filter' >> beam.Filter(lambda (key, values): len(list(values)) > 50)
| 'Unwind' >> beam.FlatMap(lambda (key, values): values)
任何想法如何使这更好的性能?谢谢你的帮助!
请与调查结果报告!如果答案有用,请选择它。 – Pablo