首页 > 其他 > 详细

Spark笔记-treeReduce、reduce、reduceByKey

时间:2019-03-14 22:09:54      阅读:189      评论:0      收藏:0      [点我收藏+]
 

参考资料:

http://stackoverflow.com/questions/32281417/understadning-treereduce-in-spark

http://stackoverflow.com/questions/34078430/treereduce-vs-reducebykey-in-spark

 

reduceByKey和treeReduce之间有一个根本区别,reduceByKey它只对key-value pair RDDs可用,而treeReduce可以对任何RDD使用,相当于是reduce操作的泛化。 reduceByKey用于实现treeReduce,但它们在任何其他意义上都不相关。

reduceByKey对每个键执行reduce,结果生成RDD; 它不是"action"操作,而是返回ShuffleRDD,是"transformation"。 这等效于groupByKey后面跟着一个map,它执行key-wise reduction(为什么使用groupByKey是低效的)。

另一方面,treeAggregate是reduce函数的泛化,灵感来自AllReduce。 这在Spark中是一个"action",将结果返回到master节点。在执行本地的reduce操作之后,普通的reduce在master上执行剩余的计算,这样的计算量可能是非常繁重的(特别是在机器学习中,reduce函数结果是大的向量或矩阵时)。 相反,treeReduce使用reduceByKey并行的执行reduction(这是通过在运行时创建key-value pair RDD,其中键由树的深度确定)

 

treeReduce & reduce return some result to driver

treeReduce does more work on the executors

while reduce bring everything back to the driver.

 
分类: Spark

Spark笔记-treeReduce、reduce、reduceByKey

原文:https://www.cnblogs.com/jeasonit/p/10533748.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!