mem*_*555 7 python reduce apache-spark rdd pyspark
你可以在这里看到实现:https: //github.com/apache/spark/blob/ffa05c84fe75663fc33f3d954d1cb1e084ab3280/python/pyspark/rdd.py#L804
它与"正常" reduce功能有何不同?
这是什么意思depth = 2?
我不希望reducer函数在分区上线性传递,但首先减少每个可用对,然后将迭代,直到我只有一对并将其减少为1,如图所示:
是否treeReduce做到这一点?
Standard reduce正在使用函数的包装版本并使用它mapPartitions.之后,在驱动程序上本地收集和减少结果.如果分区的数量很大和/或您使用的功能很昂贵,则会给单个机器带来很大的负担.
第一阶段treeReduce与上面几乎相同,但在此之后,部分结果并行合并,并且仅对驱动程序执行最终聚合.
depth被建议的树的深度和自树的节点的深度定义为根和节点之间的边数应该你给你更多或更少的预期模式,虽然它看起来像一个分布式聚合,可以提前终止一些案例.
值得注意的是,你得到treeReduce的不是二叉树.在每个级别上调整分区数量,并且很可能一次合并两个分区.
与标准reduce相比,基于树的版本在reduceByKey每次迭代时执行,这意味着大量的数据混乱.如果分区的数量相对较小,则使用普通的便宜得多reduce.如果您怀疑这个reduce瓶颈tree*版本的最后阶段值得尝试.
| 归档时间: |
|
| 查看次数: |
3524 次 |
| 最近记录: |