- 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