intersection()交集
对源RDD和参数RDD求交集后返回一个新的RDD
交集:只有3
案例演示
代码语言:javascript复制 @Test
def intersection(): Unit ={
// 创建sc
val conf =new SparkConf().setMaster("local[4]").setAppName("test")
val sc=new SparkContext(conf)
// 集合1
val list1=List(1,4,5,6,9,10)
val rdd1: RDD[Int] = sc.parallelize(list1)
// 集合2
val list2=List(2,8,6,5,7,3)
val rdd2: RDD[Int] = sc.parallelize(list2)
//求算交集部分
val value: RDD[Int] = rdd1.intersection(rdd2)
println(value.collect.toList)
}
结果
代码语言:javascript复制List(5, 6)
union()并集
对源RDD和参数RDD求并集后返回一个新的RDD
并集:1、2、3全包括
代码语言:javascript复制 @Test
def union(): Unit ={
// 创建sc
val conf =new SparkConf().setMaster("local[4]").setAppName("test")
val sc=new SparkContext(conf)
// 集合1
val list1=List(1,4,5,6,9,10)
val rdd1: RDD[Int] = sc.parallelize(list1)
// 集合2
val list2=List(2,8,6,5,7,3)
val rdd2: RDD[Int] = sc.parallelize(list2)
//求算并集
val value: RDD[Int] = rdd1.union(rdd2)
println(value.collect.toList)
}
结果
代码语言:javascript复制List(1, 4, 5, 6, 9, 10, 2, 8, 6, 5, 7, 3)
subtract()差集
计算差的一种函数,去除两个RDD中相同元素,不同的RDD将保留下来
差集:只有1
案例演示:
代码语言:javascript复制 @Test
def subtract(): Unit ={
// 创建sc
val conf =new SparkConf().setMaster("local[4]").setAppName("test")
val sc=new SparkContext(conf)
// 集合1
val list1=List(1,4,5,6,9,10)
val rdd1: RDD[Int] = sc.parallelize(list1)
// 集合2
val list2=List(2,8,6,5,7,3)
val rdd2: RDD[Int] = sc.parallelize(list2)
//求算差集
val value1: RDD[Int] = rdd1.subtract(rdd2)
println(value1.collect.toList)
val value2: RDD[Int] = rdd2.subtract(rdd1)
println(value2.collect.toList)
}
求算:rdd1的差集
代码语言:javascript复制val value1: RDD[Int] = rdd1.subtract(rdd2)
println(value1.collect.toList)
结果
代码语言:javascript复制List(4, 1, 9, 10)
求算:rdd2的差集
代码语言:javascript复制val value2: RDD[Int] = rdd1.subtract(rdd2)
println(value2.collect.toList)
结果
代码语言:javascript复制List(8, 2, 3, 7)
zip()拉链
该操作可以将两个RDD中的元素,以键值对的形式进行合并。其中,键值对中的Key为第1个RDD中的元素,Value为第2个RDD中的元素。 将两个RDD组合成Key/Value形式的RDD,这里默认两个RDD的partition数量以及元素数量都相同,否则会抛出异常。
案例:相亲配对
代码语言:javascript复制 @Test
def zip(): Unit ={
// 创建sc
val conf =new SparkConf().setMaster("local[4]").setAppName("test")
val sc=new SparkContext(conf)
val boys=List("富贵","二狗子","风少")
val rdd1: RDD[String] = sc.parallelize(boys)
val girls=List("春娇","小花","翠莲")
val rdd2: RDD[String] = sc.parallelize(girls)
val value: RDD[(String, String)] = rdd1.zip(rdd2)
println(value.collect.toList)
}
结果
代码语言:javascript复制List((富贵,春娇), (二狗子,小花), (风少,翠莲))