从功能讲reduceByKey是做聚合的,而groupByKey是做分组的.其实他两个不太一样,但是有些情况groupByKey是根据key进行分组,也可以实现类似reduceByKey的效果.

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

    2)groupByKey:按照key进行分组,没预聚合,直接进行shuffle.

    3)开发指导:在不影响业务逻辑的前提下,优先选用reduceByKey。求和操作不影响业务逻辑,求平均值影响业务逻辑。