org.apache.beam.sdk.transforms.Reshuffle的目的是什么?在文档中,目的定义为:
一个PTransform,它返回一个与其输入等效的PCollection,但 在操作上提供了GroupByKey的一些副作用, 特别防止周围变换的融合, 按ID进行检查点和重复数据删除。
防止周围变换融合的好处是什么?我认为融合是一种优化措施,可以防止不必要的步骤。实际用例会有所帮助。
答案 0 :(得分:5)
在很多情况下,您可能需要重新整理数据。以下不是详尽的清单,但应该给您和您为什么可以改组的想法:
这意味着您的ParDo之后并行度增加。如果您在此处没有破坏融合,那么您的管道将无法将数据拆分到多台计算机中进行处理。
请考虑DoFn的极端情况,即为每个输入元素生成一百万个输出元素。考虑此ParDo在其输入中接收10个元素。如果您不破坏这种高扇形ParDo及其下游转换之间的融合,尽管您将拥有数百万个元素,但它只能在10台机器上运行。
想象一下,您的管道消耗9个10MB的文件和一个10GB的文件。如果每个文件都是由一台计算机读取的,那么您的一台计算机将比其他计算机拥有更多的数据。
如果不重新组合此数据,则在管道运行时,大多数计算机将处于空闲状态。重新整理它使您可以重新平衡要在计算机之间更均匀地处理的数据。