Spark中的groupByKey,reduceByKey,combineBykey,和aggregateByKey的比较和区别

  1. groupByKey 按照key进行分组,得到相同key的值的sequence,可以通过自定义partitioner,完成分区,默认情况下使用的是HashPartitioner,分组后的元素的顺序不能保证,可能每一次的执行得到的结果都不相同。所有的数据需要进行shuffler,消耗资源。key-value键值对需要加载到内存中,若某个key有太多的value,可能发生OutOfMemoryError。

    def groupByKey(partitioner:Partitioner) :RDD[(K,Iterable[V])]

    def groupByKey(numPartitions:Int):RDD[(K,Iterable[V])]                       

                                              

2. reduceByKey  与groupByKey相比,通过使用local combiner先做 一次聚合运算,减少数据的shuffler,此过程和Hadoop MapReduce中的combiner作用相似。有三种方式调用:

def reduceByKey(partitioner:Partitioner,func:(V,V)=>V):RDD[(K,V)]  可以自定义partitioner,默认情况下是Hash Partitioner

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值