RDD 算子_转换 join | 学习笔记

简介: 快速学习 RDD 算子_转换 join

开发者学堂课程【大数据Spark2020最新课程(知识精讲与实战演练)第二阶段RDD 算子_转换 join学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/689/detail/11976


RDD 算子_转换 join


内容介绍

一、前言

二、 join 的规则

三、实例

四、结论


一、前言

在学习前面的内容之后,我们继续学习 RDD 算子。在我们的工作当中,是很有可能要对两个数据集进行一个连接。在RDD 中会用到一个新的算子去进行连接,叫做 join

 

二、 join 的规则

如图所示,假设有这样的两个 RDD ,都是 keyValue 型。现在让

RDD1join RDD2 ,结果是右边的 RDD3

可以看到的是,在经过 join 操作后, RDD1 的第一项与 RDD2 的所

有项进行了计算,生成了(" a ",(1,1))和(" a ",(1,10)),RDD1

第二项也是如此。

但是结果中没有与“b ”相关的结果,原因是 RDD2 中没有“ b ”,

没办法进行 join 操作。 join 操作非常简单,仅仅是一个方法的调用。

1.png

 

三、实例

在了解了 join 的规则后,我们开始来写代码,也是很简单的。先创建一个方法,叫做 join ,把集合复制过来。如果是 RDD1 join RDD2 ,直接写就好,它会默认地按照 Key 进行交流。

然后就可以直接 collect ,再去 foreach ,然后进行收集,最后运行代码,检验结果,得出结论。

代码如下:

@Test

def join() : Unit = {

val rdd1 = sc.parallelize(Seq(("a",1),("a",2),("b",1)))

val rdd2 = sc.parallelize(Seq(("a",10),("a",11),("a",12)))

rdd1.join(rdd2)

.collect()

.foreach(println(_))

}


四、结论

通过的出的结果,可以发现这个过程非常类似于笛卡尔集,也非常类似于内连接。这就是 join 算子,以后会有比较大的使用。

1.png

比如生成了一个笛卡尔集,可以用来过滤一些数据。

相关文章
|
Java 数据安全/隐私保护 Sentinel
面试官:Sentinel是如何实现限流的?
面试官:Sentinel是如何实现限流的?
1472 1
|
缓存 负载均衡 Dubbo
Sentinel 集群限流设计原理
Sentinel 集群限流设计原理
Sentinel 集群限流设计原理
|
JavaScript Java 测试技术
基于SpringBoot+Vue的高校教务管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的高校教务管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
288 0
|
SQL 存储 分布式计算
|
分布式计算 Serverless 数据处理
|
SQL 机器学习/深度学习 分布式计算
|
负载均衡 监控 Java
Sentinel介绍与使用
Sentinel介绍与使用
867 3
|
JavaScript 前端开发
Vue样式不生效 如何解决它
Vue样式不生效 如何解决它
|
Java API Nacos
第十二章 Spring Cloud Alibaba Sentinel
第十二章 Spring Cloud Alibaba Sentinel
1177 0
|
Kubernetes 监控 Dubbo
SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可灰度)
前三篇我们介绍了应用的开发和部署,那么在应用成功上云后,我就要面对应用的管理话题了,这一篇我们来看看如何做线上发布,并且是可灰度的。
4882 79
SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可灰度)