而reduceByKey会在局部先聚合, 聚合再shuffle,这样涉及的网络传输更少,效率更高。...#aggregate 【先局部聚合再全局聚合】 是Action,只能对一个个元素操作,而不能对(K,V)操作
scala> val rdd1 = sc.parallelize(Array(1,2,3,4,5,6,7,8,9...> val sum = rdd1.aggregate(0)(_ + _, _ + _) #先在分区内局部聚合,再全局聚合
sum: Int = 45
总共有两个分区:分区1为1,2,3,4 分区...全局聚合是无序的
scala> val rdd2 = sc.parallelize(List("a","b","c","d","e","f"),2)
rdd2: org.apache.spark.rdd.RDD...同理分区2字符串长度最小值为0,聚合后的结果则为10或01。