google-cloud-dataflow - 防止 Google Dataflow 融合的最佳方法?

标签 google-cloud-dataflow

发件人:https://cloud.google.com/dataflow/service/dataflow-service-desc#preventing-fusion

You can insert a GroupByKey and ungroup after your first ParDo. The Dataflow service never fuses ParDo operations across an aggregation.



这就是我在 python 中提出的 - 这是否合理/有更简单的方法吗?
def prevent_fuse(collection):
    return (
        collection
        | beam.Map(lambda x: (x, 1))
        | beam.GroupByKey()
        | beam.FlatMap(lambda x: (x[0] for v in x[1]))
        )

编辑,回应本钱伯斯的问题

我们想要防止融合,因为我们有一个生成更大集合的集合,我们需要跨更大集合进行并行化。如果它融合了,我只能在更大的集合中找到一名 worker 。

最佳答案

Apache Beam SDK 2.3.0 添加了实验性 Reshuffle 转换,这是 Reshuffle.viaRandomKey 的 Python 替代品@BenChambers 提到的操作。您可以使用它代替您的自定义 prevent_fuse代码。

关于google-cloud-dataflow - 防止 Google Dataflow 融合的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47162365/

相关文章:

google-cloud-platform - 有没有办法自定义 Google 提供的 Cloud Dataflow 模板?

python - 谷歌数据流: insert + update in BigQuery in a streaming pipeline

azure - 使用云服务进行并行文件处理

python - 如何在 python 中从数据流/光束查询数据存储

google-bigquery - 如何从 Google BigQuery 将数据加载到 Google Cloud Bigtable

google-cloud-dataflow - 在 Maven 外部运行时,带有 DataflowPipelineRunner 的 Dataflow stock WordCount 示例失败

google-cloud-dataflow - 跳过标题行 - Cloud DataFlow 可以吗?

google-cloud-dataflow - 使用 Dataflow 的 Bigtable 批量加载太慢

python - Google Cloud DataFlow 无法将文件写入临时位置

python - 数据流管道中的外部 Python 依赖项