大数据全系列 教程
1869个小节阅读:466.7k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
package com.itbaizhan.rdd
//1.导入类
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object RddIntersectionSubtract {
def main(args: Array[String]): Unit = {
//2.构建SparkConf对象,并设置本地运行和程序名称
val conf: SparkConf = new SparkConf().setMaster("local[1]").setAppName("交集和差集")
//3.使用conf对象构建SparkContet对象
val sc = new SparkContext(conf)
//5.创建5个RDD对象
val rdd1: RDD[Int] = sc.parallelize(Array(1, 2, 3, 4))
val rdd2: RDD[Int] = sc.parallelize(Array(3, 4, 5, 6))
val rdd3: RDD[(Char, Int)] = sc.parallelize(List(('x', 6), ('y', 1)))
val rdd4: RDD[(Char, Int)] = sc.parallelize(List(('x', 6), ('z', 3)))
val rdd5: RDD[(Char, Int)] = sc.parallelize(List(('x', 5), ('z', 3)))
//6.交集运算,将两个rdd中的相同元素获取后组成一个新的rdd,无方向性
println(rdd1.intersection(rdd2).collect().mkString(","))
println(rdd2.intersection(rdd1).collect().mkString(","))
val rdd34: RDD[(Char, Int)] = rdd3.intersection(rdd4)
val rdd43: RDD[(Char, Int)] = rdd4.intersection(rdd3)
println(rdd34.collect().mkString(","))
println(rdd43.collect().mkString(","))
//如果是二元组,key和value都相同,才认定为同一个元素
println(rdd4.intersection(rdd5).collect().mkString(","))
//7.差集,有方向性的
println(rdd1.subtract(rdd2).collect().mkString(","))
println(rdd2.subtract(rdd1).collect().mkString(","))
println(rdd3.subtract(rdd4).collect().mkString(","))
println(rdd4.subtract(rdd3).collect().mkString(","))
//扩展:只比较key
println("-------------------")
println(rdd4.subtract(rdd5).collect().mkString(","))
println("=="+rdd4.subtractByKey(rdd5).collect().mkString(","))
//4.关闭sc对象
sc.stop()
}
}
实时效果反馈
1. 关于Spark并交差集算子的描述,错误的是:
A union
算子将两个RDD中的元素合并到一个新RDD中,是不会去重的,无方向性。
B intersection
算子求两个RDD之间的交集, 将交集取出并返回由交集元素组成的新RDD,无方向性。
C subtract
求RDD之间的差集, 有方向性。
D subtractByKey
求 key-value型的RDD之间的差集只比较key,无方向性。
答案:
1=>D 有方向性