键值对RDD在实际生产中很常用,通常用来进行聚合计算,并且Spark对键值对RDD也提供了新的操作接口可以做更多操作,本文简单介绍一些键值对RDD的基础操作。
如何创建Pair RDD
1)键值对格式的数据可以直接读入,返回Pair RDD
2)使用map()把一个普通的RDD转化为Pair RDD
读取text文件,取每行文本的第一个单词做key,该行文本做value
val lines = context.textFile("text")
lines.map(x => (x.split(" ")(0), x))
Pair RDD的转化操作
Pair RDD也是RDD,对RDD可用的操作对于Pair RDD也可用。
首先创建出一个Pair RDD
scala> val data = sc.parallelize(List(1,2,3,4,4))
data: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[7] at parallelize at <console>:24
scala> val data2 = data.map(x => (x,1))
data2: org.apache.spark.rdd.RDD[(Int, Int)] = MapPartitionsRDD[8] at map at <console>:26
scala> data2.take(10)
res16: Array[(Int, Int)] = Array((1,1), (2,1), (3,1), (4