gpt4 book ai didi

python - 了解 Spark 中的 treeReduce()

转载 作者:太空狗 更新时间:2023-10-29 21:45:57 24 4
gpt4 key购买 nike

你可以在这里看到实现: https://github.com/apache/spark/blob/ffa05c84fe75663fc33f3d954d1cb1e084ab3280/python/pyspark/rdd.py#L804

它与“普通”reduce 函数有何不同?
depth = 2 是什么意思?

我不希望 reducer 函数在分区上线性传递,但是首先减少每个可用的对,然后像这样迭代直到我只有一对并将其减少到 1,如图所示:

enter image description here

treeReduce 实现了吗?

最佳答案

标准 reduce 正在采用函数的包装版本并将其用于 mapPartitions .之后收集结果并reduced locally在司机身上。如果分区数量很大和/或您使用的功能很昂贵,它会给单台机器带来很大的负担。

treeReduce 的第一阶段与上面几乎相同,但之后部分结果被并行合并,并且只在驱动程序上执行最终聚合。

depthsuggested depth of the tree并且由于树中节点的深度被定义为根和节点之间的边数,所以你应该或多或少地给你一个预期的模式,尽管它看起来像一个分布式聚合 can be stopped early在某些情况下。

值得注意的是,您使用 treeReduce 得到的不是二叉树。分区的数量在每个级别上进行调整,并且很可能一次合并两个以上的分区。

与标准 reduce 相比,基于树的版本 performs reduceByKey with each iteration这意味着大量的数据改组。如果分区数量相对较少,使用普通的 reduce 会便宜得多。如果您怀疑 reduce 的最后阶段是瓶颈,tree* 版本可能值得一试。

关于python - 了解 Spark 中的 treeReduce(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32281417/

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