Spark groupByKey & groupByKey 之间的区别

groupByKey()

groupByKey:按照key进行分组,直接进行shuffle。

reduceByKey()

reduceByKey:按照key进行聚合,在shuffle之前有combine(预聚合)操作,返回结果是RDD[k,v].

def reduceByKey(partitioner: Partitioner, func: (V, V) => V): RDD[(K, V)] = self.withScope {
    combineByKeyWithClassTag[V]((v: V) => v, func, func, partitioner)
  }

使用建议

reduceByKey 和 groupByKey 有一定的共同之处,建议在不影响业务逻辑的情况下优先使用reduceByKey

如果 shuffle 之前有一个 combine(预聚合)操作,这样的 shuffle 操作的性能并不低

发表评论 / Comment

用心评论~