大数据全系列 教程
1869个小节阅读:464.9k
目录
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 RddJoin {
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.创建两个rdd
val rdd1: RDD[(Int, String)] = sc.makeRDD(List((101, "鲁班"), (102, "凯"), (103, "程咬金")))
val rdd2: RDD[(Int, String)] = sc.makeRDD(List((101, "射手"), (102, "战士"), (104, "法师")))
//6.通过join关联算子 rdd1.join(rdd2) 关联条件是key,只保留关联上的数据
val rdd1j2: RDD[(Int, (String, String))] = rdd1.join(rdd2)
//结果:(101,(鲁班,射手)),(102,(凯,战士))
println(rdd1j2.collect().mkString(","))
//7.左外关联(101,(鲁班,Some(射手))),(102,(凯,Some(战士))),(103,(程咬金,None))
val rdd1loj2: RDD[(Int, (String, Option[String]))] = rdd1.leftOuterJoin(rdd2)
println(rdd1loj2.collect().mkString(","))
//8.右外关联(101,(Some(鲁班),射手)),(104,(None,法师)),(102,(Some(凯),战士))
val rdd1roj2: RDD[(Int, (Option[String], String))] = rdd1.rightOuterJoin(rdd2)
println(rdd1roj2.collect().mkString(","))
//(101,(射手,Some(鲁班))),(104,(法师,None)),(102,(战士,Some(凯)))
println(rdd2.leftOuterJoin(rdd1).collect().mkString(","))
//4.关闭sc对象
sc.stop()
}
}
实时效果反馈
1. 关于关联算子的描述,错误的是:
A 对于join
算子来说 关联条件 按照二元元组的key来进行关联,只保留关联上的数据。
B rdd1.leftOuterJoin(rdd2)
rdd1和rdd2左外连接 关联上的数据和rdd1中未关联上的数据。
C rdd1.rightOuterJoin(rdd2)
和rdd1.leftOuterJoin(rdd2)
结果一样。
D rdd1.rightOuterJoin(rdd2)
rdd1和rdd2右外连接 联上的数据和rdd2中未关联上的数据。
答案:
1=>C 结果不一样