0
点赞
收藏
分享

微信扫一扫

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

腊梅5朵 2022-11-16 阅读 61


1、Spark中的reduceByKey和CombineByKey有什么区别?


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

 

reduceByKey和CombineByKey之间的唯一区别是API,在内部它们的功能完全相同。

reduceByKey

CombineByKey

reduceByKey在内部调用​​combineByKey​​

CombineByKey是通用API,由reduceByKey和aggregateByKey使用

reduceByKey的输入类型和outputType是相同的

CombineByKey更灵活,因此可以提到所需的outputType。


输出类型不一定需要与输入类型相同。

AggregateByKey内部也调用​​CombineByKey​​



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


GroupByKey

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


ReduceByKey / CombineByKey / AggregateByKey:

        

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


具体如下:

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​​

​​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/​​


举报

相关推荐

0 条评论