Spark 2.x管理与开发-Spark RDD的高级算子(三)aggregateByKey*

https://spark.apache.org/docs/2.1.0/api/scala/#org.apache.spark.rdd.PairRDDFunctions

类似于aggregate操作,区别:操作的是<Key,Value>的数据类型

 举例-1:

局部求最大值,全局求和

将每个分区中的动物最多的个数求和:

结果分析:

分区一:相同Key的对value进行比较,留下较大的那个。剩下:(cat,5) , (mouse,4)

分区二:同理,剩下: (cat,12) , (dog,12) , (mouse,2)

全局操作:相同Key的value进行相加。得出 (dog,12), (cat,17), (mouse,6)

举例-2:

局部求和,全局也求和

将每种动物个数求和:

结果分析:

分区一:组内相加:(cat,7),(mouse,4)    

分区二:同理,(cat,12),(dog,12) ,(mouse,2)

全局:(cat,19),(dog,12) ,(mouse,6) 

这个例子也可以使用:reduceByKey

scala> pairRDD.reduceByKey(_+_).collect

res73: Array[(String, Int)] = Array((dog,12), (cat,19), (mouse,6))

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3