键值对 RDD是 Spark 中许多操作所需要的常见数据类型
键值对 RDD 通常用来进行聚合计算。我们一般要先通过一些初始 ETL(抽取、转化、装载)操作来将数据转化为键值对形式。
Spark 为包含键值对类型的 RDD 提供了一些专有的操作。
1.创建Pair RDD
val pairs = input.map(x => (x+1, x)) for (pair <- pairs){ println(pair) }
2.Pair RDD的转化操作
Pair RDD 可以使用所有标准 RDD 上的可用的转化操作。
Pair RDD也支持RDD所支持的函数
pairs.filter{case (key, value) => value.length < 20}
3.聚合操作
类似fold() 、 combine() 、 reduce() 等行动操作,这些操作返回 RDD,因此它们是转化操作而不是行动操作。
reduceByKey()函数,接收一个函数,并使用这个函数对值进行合并
val wordCount = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b) #切分成单词,转换成键值对并计数
foldByKey()函数,也是接收一个函数,并使用这个函数对值进行合并,提供初始值
rdd.mapValues(x => (x, 1)).reduceByKey((x, y) => (x._1 + y._1, x._2 + y._2))
原文:http://www.cnblogs.com/tonglin0325/p/6679575.html