您的位置:首页 > 其它

[Spark--基础]--聚合操作-reduceByKey、combineBykey、groupBy和AggregateByKey

2017-12-20 13:34 1401 查看
1、Spark中的reduceByKey和CombineByKey有什么区别?

groupByKey和CombineByKey
/ reduceByKey有很大的区别。请参阅以下文章以深入了解

 

reduceByKey和CombineByKey之间的唯一区别是API,在内部它们的功能完全相同。
reduceByKeyCombineByKey
reduceByKey在内部调用combineByKeyCombineByKey是通用API,由re​​duceByKey和aggregateByKey使用
reduceByKey的输入类型和outputType是相同的CombineByKey更灵活,因此可以提到所需的outputType。

输出类型不一定需要与输入类型相同。
 AggregateByKey内部也调用CombineByKey

2、Spark中groupByKey和ReduceByKey的区别是什么?

GroupByKey



ReduceByKey
/ CombineByKey / AggregateByKey:

        


具体如下:

GroupByKey            ReduceByKey / CombineByKey / AggregateByKey:
  所有数据都从mapTask发送到reduceTask 合并器在MapTask和reduceTask上运行
没有优化网络I / O 优化的网络I / O
只有在reduceTask中需要给定键的所有Value时才应该使用应该总是使用,应该避免使用groupByKey。

当需要像sum,average,median,mode,top N这样的函数时应该使用
可能导致GC问题和JobFailure更少的数据被洗牌,所以失败的机会更少
一个火花分区可以容纳最多2 GB的数据一个火花分区可以容纳最多2 GB的数据
 

参考:
https://github.com/vaquarkhan/vk-wiki-notes/wiki/reduceByKey--vs-groupBykey-vs-aggregateByKey-vs-combineByKey http://www.cnblogs.com/LuisYao/p/6813228.html https://stackoverflow.com/questions/42632707/difference-between-reducebykey-and-combinebykey-in-spark http://bytepadding.com/big-data/spark/reducebykey-vs-combinebykey/ http://bytepadding.com/big-data/spark/groupby-vs-reducebykey/ http://bytepadding.com/big-data/spark/combine-by-key-to-find-max/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: