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

标签 python google-cloud-dataflow apache-beam

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

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

我们使用的是 Apache Beam Python 2.2。

最佳答案

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

  1. 允许 Dataflow 服务自行智能地做出优化决策。 Dataflow有智能autoscaling可以根据当前工作负载增加或减少工作虚拟机数量的功能。
  2. 确保使用 Apache Beam SDK 编写的管道可跨 runners 移植(例如 Dataflow、Spark 或 Flink)。管道逻辑是根据一组抽象来编写的,这样作业就可以在各种环境中运行。每个工作人员都可以将自己的一组优化应用于这些高级抽象。

关于python - 控制数据流/Apache Beam 输出分片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49519960/

相关文章:

python - 在 python 中,如何将十六进制 ascii 字符串转换为原始内部二进制字符串?

python - 将颜色图应用于 Matplotlib 3D 表面中的自定义轴

python - 线图中的非重叠误差线

python - 将 Python Systemd 输出记录到日志文件

java - 使用 PubSub 在本地运行 java 数据流管道

google-cloud-platform - gcloud auth activate-service-account --key-file 和 GOOGLE_APPLICATION_CREDENTIALS 之间的区别

python - WriteToText 在 DirectRunner 中工作,但在 DataflowRunner 中因 TypeError 而失败

python - gcp 数据流 apache-beam 问题。使用代码将另一个 python 文件导入 main .py

google-cloud-datastore - 从数据存储流式传输到数据流?

java - 在 Apache Beam 中写入不同的源