1. 程式人生 > >Spark API 詳解/大白話解釋 之 reduce、reduceByKey

Spark API 詳解/大白話解釋 之 reduce、reduceByKey

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

val c = sc.parallelize(1 to 10)
c.reduce((x, y) => x + y)//結果55

具體過程,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

//結果 Array((1,5), (3,10))