【发布时间】:2017-11-07 16:03:17
【问题描述】:
发件人:https://cloud.google.com/dataflow/service/dataflow-service-desc#preventing-fusion
您可以在第一个 ParDo 之后插入 GroupByKey 并取消组合。 Dataflow 服务从不跨聚合融合 ParDo 操作。
这是我在 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]))
)
编辑,回应 Ben Chambers 的问题
我们希望防止融合,因为我们有一个集合会生成一个更大的集合,并且我们需要跨更大的集合进行并行化。如果它融合了,我只会在更大的集合中找到一名工人。
【问题讨论】: