Spark的rdd的action操作reducebykey
https://www.douban.com/note/505003329/
顧名思義舟舒,reduceByKey就是對(duì)元素為KV對(duì)的RDD中Key相同的元素的Value進(jìn)行reduce,因此秃励,Key相同的多個(gè)元素的值被reduce為一個(gè)值,然后與原RDD中的Key組成一個(gè)新的KV對(duì)皆尔。
Spark算子reduceByKey深度解析 - MOON - 博客頻道 - CSDN.NET
http://blog.csdn.net/qq_23660243/article/details/51435257
國(guó)外的大牛一上來給出這么一句話币励,個(gè)人感覺高度概括了reduceByKey的功能:
[plain] view plain copy print?
Spark RDD reduceByKey function merges the values for each key
using an associative reduce function.【Spark的RDD的reduceByKey
是使用一個(gè)相關(guān)的函數(shù)來合并每個(gè)key的value的值的一個(gè)算子(那么主
干就是reduceByKey是個(gè)算子/函數(shù))】
scala> val x = sc.parallelize(Array(("a", 1), ("b", 1), ("a", 1), | ("a", 1), ("b", 1), ("b", 1), | ("b", 1), ("b", 1)), 3)
我們創(chuàng)建了一個(gè)Array的字符串,并把其存入spark的集群上流炕,設(shè)置了三個(gè)分區(qū)【這里我們不關(guān)注分區(qū)仅胞,只關(guān)注操作】。那么我們調(diào)用reduceByKey并且傳入函數(shù)進(jìn)行相應(yīng)操作【本處我們對(duì)相同key的value進(jìn)行相加操作干旧,類似于統(tǒng)計(jì)單詞出現(xiàn)次數(shù)】:
scala> val y = x.reduceByKey((pre, after) => (pre + after))
這里兩個(gè)參數(shù)我們邏輯上讓他分別代表同一個(gè)key的兩個(gè)不同values,那么結(jié)果想必大家應(yīng)該猜到了:
scala> y.collectres0: Array[(String, Int)] = Array((a,3), (b,5))