连接操作_连接类型_inner | 学习笔记

简介: 快速学习连接操作_连接类型_inner

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段:连接操作_连接类型_inner】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/690/detail/12098


连接操作_连接类型_inner

 

连接类型

1.内连接

(1)内连接就是按照条件找到两个数据集关联的数据,并且在生成的结果集中只存在能关联到的数据

image.png

crossJoin 通过 where 也实现了内连接。

根据上图,2 和 A 能连接,3 和 B 能连接,因为颜色相同,1 和 C 没有对应数据进行连接,结果集只显示能连接上的数据,这种连接方式就是内连接。

(2)SQL 语句

select * from person inner join cities on person.cityId =cities .id

(3)Dataset 操作

person . join ( right = cities ,

joinExprs = person ( "cityId" ) === cities ( "id" ),

joinType = "inner" )

.show ( )

进入代码:

@Test

def inner(): unit = {

person.join(cities,

注:在进行交叉连接时使用 crossJoin,在进行其他连接时,同一使用 join

person.col( colName = "cityId") === cities.col( colName = "id"),

/指定连接方式

joinType = "inner")

.show()

以上是第一中写法,第二种写法如下:

spark.sql( sqIText = "select p.id, p.name, c.name "+

"from person p inner join cities c")

注:在另起一行时,字符串后面要有空格,否则另起一行会出错

.show()

}

运行得到结果集:

第一个结果集没有问题

image.png

第二次执行报错,第二种方式在 inner join 之后不用进行 where,但是没写连接规则,注意一定要写连接规则。

在代码中加上 on 语句:

spark.sql( sqlText = "select p.id,p.name,c.name " +

"from person p inner join cities c on p.cityid = c.id")

.show( )

再次运行:

image.png

结果显示正常。

内连接就是只连接能连接上的内容。

发现在上图结果集中少了一行数据,根据数据集显示,

val person = Seq((0,"Lucy",0),(1,"Lily",0),(2,“Tim",2),(3,“Danial",3))

.toDF( "id"", "name" , "cityId")

person .createOrReplaceTempView ( "person" )

val cities = Seq((0,"Beijing" ),(1,"Shanghai" ),(2,"Guangzhou"))

.toDF( "id" , "name" )

cities .createOrReplaceTempView ( "cities")

用户是四个人,但 Danial 的 3 在城市集中没有对应数据,所以结果集不显示 Danial 和 shanghai。

相关文章
|
7月前
|
Java 程序员 数据库
【动态连接】
【动态连接】
|
6月前
|
安全 物联网 网络虚拟化
连接和访问的智慧选项
近年来,企业网络通信需求可谓五花八门,变幻莫测。它不仅为企业的生产、办公、研发、销售提供全面赋能,同时也让企业业务规模变大成为了可能。今天,我们来聊聊广域网中两个不可忽视的概念:连接(Connection)和访问(Access),它们均以各自的属性在企业不同业务场景中发挥着重要作用。本文将深入探讨这两个概念,了解它们的应用场景、用例、优缺点以及如何在企业网络中合理应用,为企业提供降本增效,长远规划的重要帮助。
连接和访问的智慧选项
|
11月前
|
弹性计算 安全 关系型数据库
介绍两种连接方式
介绍两种连接方式
137 1
|
网络协议 Linux 应用服务中间件
一台linux服务器最多能支持多少个TCP连接?(要区分客户端还是服务端)
一台linux服务器最多能支持多少个TCP连接?(要区分客户端还是服务端)
842 0
|
SQL 大数据 API
连接操作_连接类型_fullouter | 学习笔记
快速学习连接操作_连接类型_fullouter
77 0
连接操作_连接类型_fullouter | 学习笔记
|
SQL 大数据 开发者
连接操作_连接类型_left | 学习笔记
快速学习连接操作_连接类型_left
84 0
连接操作_连接类型_left | 学习笔记
|
SQL 分布式计算 大数据
连接操作_连接类型_cross | 学习笔记
快速学习连接操作_连接类型_cross
100 0
连接操作_连接类型_cross | 学习笔记
EMQ
|
负载均衡 安全 网络协议
创建 MQTT 连接时如何设置参数?
本文将详细讲解创建MQTT连接时各个连接参数的作用,帮助开发者迈出使用MQTT的第一步。
EMQ
918 0
C++学习——四种字符串与数据连接的方法
C++学习——四种字符串与数据连接的方法
161 0
|
弹性计算 Linux 网络安全
连接服务器的几种方式
本文撰写了3种连接阿里云服务器的方式
3435 2
连接服务器的几种方式