代码之家  ›  专栏  ›  技术社区  ›  Josh Sacks

控制数据流/Apache Beam输出分片

  •  6
  • Josh Sacks  · 技术社区  · 7 年前

    我们通过实验发现,在数据流/Apache Beam管道中设置明确的输出碎片会导致性能更差。我们的证据表明,数据流最终会秘密地执行另一个GroupBy。 我们已经开始让数据流自动选择#个碎片(碎片=0)。但是,对于某些管道,这会导致大量相对较小的输出文件(约15K个文件,每个<1MB)。

    是否可以向数据流发送关于输出的预期大小的提示,以便它可以相应地扩展?我们注意到,这个问题主要发生在输入数据集非常大而输出小得多的情况下。

    我们正在使用Apache Beam Python 2.2。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Scott Wegner    7 年前

    Dataflow/Apache Beam中不支持这种类型的提示。一般来说,Dataflow和Apache Beam被设计为尽可能“无旋钮”,原因如下:

    1. 允许数据流服务自己智能地做出优化决策。数据流具有smart autoscaling 可以根据当前工作负载向上或向下扩展工作虚拟机数量的功能。
    2. 确保使用Apache Beam SDK编写的管道可以跨 runners (如数据流、Spark或Flink)。管道逻辑是根据一组抽象编写的,这样作业就可以在各种环境中运行。每个工作者都可以对这些高级抽象应用自己的一组优化。
    推荐文章