Spark的rdd的action操作reducebykey
https://www.douban.com/note/505003329/
顾名思义,reduceByKey就是对元素为KV对的RDD中Key相同的元素的Value进行reduce,因此,Key相同的多个元素的值被reduce为一个值,然后与原RDD中的Key组成一个新的KV对。
Spark算子reduceByKey深度解析 - MOON - 博客频道 - CSDN.NET
http://blog.csdn.net/qq_23660243/article/details/51435257
国外的大牛一上来给出这么一句话,个人感觉高度概括了reduceByKey的功能:
[plain] view plain copy print?
Spark RDD reduceByKey function merges the values for each key
using an associative reduce function.【Spark的RDD的reduceByKey
是使用一个相关的函数来合并每个key的value的值的一个算子(那么主
干就是reduceByKey是个算子/函数)】
scala> val x = sc.parallelize(Array(("a", 1), ("b", 1), ("a", 1), | ("a", 1), ("b", 1), ("b", 1), | ("b", 1), ("b", 1)), 3)
我们创建了一个Array的字符串,并把其存入spark的集群上,设置了三个分区【这里我们不关注分区,只关注操作】。那么我们调用reduceByKey并且传入函数进行相应操作【本处我们对相同key的value进行相加操作,类似于统计单词出现次数】:
scala> val y = x.reduceByKey((pre, after) => (pre + after))
这里两个参数我们逻辑上让他分别代表同一个key的两个不同values,那么结果想必大家应该猜到了:
scala> y.collectres0: Array[(String, Int)] = Array((a,3), (b,5))