avatar

目录
spark常用算子join

简述

JOIN函数签名

def join[W](other: RDD[(K, W)]): RDD[(K, (V, W))]

函数说明

  • spark RDD 转换算子
  • (对照函数签名)在类型为(K,V)和(K,W)的RDD上调用,返回一个相同key对应的所有元素连接在一起的(K,(V,W))的RDD

重点示例

  • join
  • leftOuterJoin
  • rightOuterJoin
  • fullOuterJoin
scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object JoinTest {

def main(args: Array[String]): Unit = {

//1.创建SparkConf
val sparkConf: SparkConf = new SparkConf().setAppName("JoinTest").setMaster("local[*]")

//2.创建SparkContext
val sc = new SparkContext(sparkConf)

//3.创建两个RDD
val rdd1: RDD[(String, Int)] = sc.makeRDD(Array(("a", 1), ("a", 2), ("b", 1), ("c", 1)))
val rdd2: RDD[(String, Int)] = sc.makeRDD(Array(("a", 1), ("b", 1), ("b", 2), ("d", 1)))

//4.测试各种JOIN【 注意返回值 】
val result1: RDD[(String, (Int, Int))] = rdd1.join(rdd2)
val result2: RDD[(String, (Int, Option[Int]))] = rdd1.leftOuterJoin(rdd2)
val result3: RDD[(String, (Option[Int], Int))] = rdd1.rightOuterJoin(rdd2)
val result4: RDD[(String, (Option[Int], Option[Int]))] = rdd1.fullOuterJoin(rdd2)

//5.打印
result1.foreach(println)
println("======================>>>")
result2.foreach(println)
println("======================>>>")
result3.foreach(println)
println("======================>>>")
result4.foreach(println)

//6.关闭连接
sc.stop()

}

}

输出结果:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(b,(1,1))
(a,(1,1))
(a,(2,1))
(b,(1,2))
======================>>>
(c,(1,None))
(a,(1,Some(1)))
(a,(2,Some(1)))
(b,(1,Some(1)))
(b,(1,Some(2)))
======================>>>
(d,(None,1))
(a,(Some(1),1))
(a,(Some(2),1))
(b,(Some(1),1))
(b,(Some(1),2))
======================>>>
(d,(None,Some(1)))
(c,(Some(1),None))
(a,(Some(1),Some(1)))
(a,(Some(2),Some(1)))
(b,(Some(1),Some(1)))
(b,(Some(1),Some(2)))
文章作者: Yang4
文章链接: https://masteryang4.github.io/2020/05/25/spark%E5%B8%B8%E7%94%A8%E7%AE%97%E5%AD%90join/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 MasterYangBlog
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论