双Value 类型
双Value 类型是指两个 RDD 之间
的操作
并集 union(other: RDD[T])
- 作用:并集;对
源RDD
和参数RDD
求并集
后返回一个新的RDD
创建RDD
val listRDD: RDD[Int] = sc.makeRDD(1 to 5) val listRDD1: RDD[Int] = sc.makeRDD(2 to 7)
转换RDD
val resRDD: RDD[Int] = listRDD.union(listRDD1)
结果输出
val r = resRDD.collect() println(r.mkString(",")) ------------------------ 1,2,3,4,5,2,3,4,5,6,7
交集 intersection(other: RDD[T],[numPartitions: Int])
- 作用:交集,返回 两个RDD中
相同的值
。
创建RDD
val listRDD: RDD[Int] = sc.makeRDD(1 to 5) val listRDD1: RDD[Int] = sc.makeRDD(3 to 8)
转换RDD
val resRDD: RDD[Int] = listRDD.intersection(listRDD1)
结果输出
val r = resRDD.collect() println(r.mkString(",")) ------------------------ 3,4,5
差集 subtract(other: RDD[T],[numPartitions: Int])
- 作用:差集;
返回源RDD
中与参数RDD
中不同的值。
创建RDD
val listRDD: RDD[Int] = sc.makeRDD(1 to 5) val listRDD1: RDD[Int] = sc.makeRDD(3 to 8)
转换RDD
val resRDD: RDD[Int] = listRDD.subtract(listRDD1)
结果输出
val r = resRDD.collect() println(r.mkString(",")) ------------------------ 1,2
intersection(other: RDD[T])
- 作用:笛卡尔积
(尽量避免使用)
创建RDD
val listRDD: RDD[Int] = sc.makeRDD(1 to 5) val listRDD1: RDD[Int] = sc.makeRDD(3 to 7)
转换RDD
val resRDD: RDD[(Int, Int)] = listRDD.cartesian(listRDD1)
结果输出
val r = resRDD.collect() println(r.mkString(",")) ------------------------ (1,5),(1,6),(1,7),(2,5),(2,6),(2,7),(3,5),(3,6),(3,7)
zip(other: RDD[T])
- 作用:将
两个RDD
按照元素顺序组合成Key/Value
形式的RDD,两个RDD的partition数量
以及元素数量都相同
,否则会抛出异常。
创建RDD
val listRDD: RDD[Int] = sc.makeRDD(1 to 5) val listRDD1: RDD[Int] = sc.makeRDD(3 to 7)
转换RDD
val resRDD: RDD[(Int, Int)] = listRDD.zip(listRDD1)
结果输出
val r = resRDD.collect() println(r.mkString(",")) ------------------------ (1,5),(2,6),(3,7)
版权声明:《 Spark RDD 算子 (双Value类型) 》为明妃原创文章,转载请注明出处!
最后编辑:2020-2-15 15:02:21