1. 程式人生 > >reduce、reduceByKey詳解

reduce、reduceByKey詳解

reduce(binary_function) 
reduce將RDD中元素前兩個傳給輸入函式,產生一個新的return值,新產生的return值與RDD中下一個元素(第三個元素)組成兩個元素,再被傳給輸入函式,直到最後只有一個值為止。

val c = sc.parallelize(1 to 10)
c.reduce((x, y) => x + y)//結果55
1
2
具體過程,RDD有1 2 3 4 5 6 7 8 9 10個元素, 
1+2=3 
3+3=6 
6+4=10 
10+5=15 
15+6=21 
21+7=28 
28+8=36 
36+9=45 
45+10=55

reduceByKey(binary_function) 
reduceByKey就是對元素為KV對的RDD中Key相同的元素的Value進行binary_function的reduce操作,因此,Key相同的多個元素的值被reduce為一個值,然後與原RDD中的Key組成一個新的KV對。

val a = sc.parallelize(List((1,2),(1,3),(3,4),(3,6)))
a.reduceByKey((x,y) => x + y).collect
1
2
//結果 Array((1,5), (3,10))