gpt4 book ai didi

google-cloud-dataflow - Apache Beam/数据流改组

转载 作者:行者123 更新时间:2023-12-04 14:22:22 27 4
gpt4 key购买 nike

org.apache.beam.sdk.transforms.Reshuffle的目的是什么?在文档中,目的定义为:

A PTransform that returns a PCollection equivalent to its input but operationally provides some of the side effects of a GroupByKey, in particular preventing fusion of the surrounding transforms, checkpointing and deduplication by id.



防止周围变换融合的好处是什么?我认为融合是一种优化措施,可以防止不必要的步骤。实际用例会有所帮助。

最佳答案

在几种情况下,您可能需要重新整理数据。以下不是详尽的 list ,但是应该给您和您为什么可以改组的想法:
当您的ParDo转换之一具有很高的扇出度时
这意味着您的ParDo之后,并行度增加了。如果您在此处没有破坏融合,则您的管道将无法将数据拆分到多台计算机中进行处理。
考虑DoFn为每个输入元素生成一百万个输出元素的极端情况。考虑此ParDo在其输入中接收10个元素。如果您不中断此高扇形ParDo及其下游转换之间的融合,则尽管您将拥有数百万个元素,但它只能在10台计算机上运行。

  • 诊断此的一种好方法是查看输入PCollection中的元素数与输出PCollection中的元素数。如果后者明显大于第一个,则您可能要考虑添加重新排列。

  • 当您的数据在各台机器之间的平衡不佳时**
    想象一下,您的管道消耗了9个10MB的文件和1个10GB的文件。如果每个文件都是由一台计算机读取的,则您的一台计算机将比其他计算机拥有更多的数据。
    如果不重新整理此数据,则在管道运行时,大多数计算机将处于空闲状态。改组它使您可以重新平衡要在计算机之间更均匀地处理的数据。
  • 诊断此的好方法是查看管道中有多少 worker 正在执行工作。如果管道很慢,并且只有一个工作人员在处理数据,那么您可以从重新组合中受益。
  • 关于google-cloud-dataflow - Apache Beam/数据流改组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54121642/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com