Spark的RDD转换算子-双value型
双value型其实就是交集、并集、差集、拉链等操作
一、交集:intersection
函数签名
def intersection(other: RDD[T]): RDD[T]
对源 RDD 和参数 RDD 求交集后返回一个新的 RDD
val rdd1 = sparkContext.makeRDD(List(1,2,3,4))
val rdd2 = sparkContext.makeRDD(List(3,4,5,6))
val newRDD = rdd1.intersection(rdd2)
二、并集:union
函数签名
def union(other: RDD[T]): RDD[T]
对源 RDD 和参数 RDD 求并集后返回一个新的 RDD
val rdd1 = sparkContext.makeRDD(List(1,2,3,4))
val rdd2 = sparkContext.makeRDD(List(3,4,5,6))
val newRDD = rdd1.union(rdd2)
三、差集:subtract
函数签名
def subtract(other: RDD[T]): RDD[T]
以一个 RDD 元素为主,去除两个 RDD 中重复元素,将其他元素保留下来。求差集
val rdd1 = sparkContext.makeRDD(List(1,2,3,4))
val rdd2 = sparkContext.makeRDD(List(3,4,5,6))
val newRDD = rdd1.subtract(rdd2)
四、拉链:zip
函数签名
def zip[U: ClassTag](other: RDD[U]): RDD[(T, U)]
将两个 RDD 中的元素,以键值对的形式进行合并。其中,键值对中的 Key 为第 1 个 RDD中的元素,Value 为第 2 个 RDD 中的相同位置的元素。
val rdd1 = sparkContext.makeRDD(List(1,2,3,4))
val rdd2 = sparkContext.makeRDD(List(3,4,5,6))
val newRDD = rdd1.zip(rdd2)
注意:交、并、差集要求两个数据集类型是一致的,而拉链则可以不一致,但是拉链要求数据源的分区数量保持一致,每个分区的元素保持一致