Apache Beam中的FlatMap和Map函数是否在并行运行?
(p
| 'GetJava' >> beam.io.ReadFromText(input)
| 'GetImports' >> beam.FlatMap(lambda line: startsWith(line, keyword))
| 'PackageUse' >> beam.FlatMap(lambda line: packageUse(line, keyword))
| 'TotalUse' >> beam.CombinePerKey(sum)
| 'Top_5' >> beam.transforms.combiners.Top.Of(5, by_value)
| 'write' >> beam.io.WriteToText(output_prefix)
)
管道中的并行化发生在ReadFromText
变换之后。该转换将目录分成多个文件,将文件分成段。
每个段在一个工作器中串行处理,因此第一个FlatMap
变换的输出将连续地下载到另一个FlatMap
中 - 但是您将在每个文件段上运行许多FlatMap+FlatMap
实例。
如果这回答了你的问题,请告诉我:)