給定一個相對較小的數據源(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