连接操作_连接类型_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。

相关文章
|
Java 程序员 数据库
【动态连接】
【动态连接】
|
8月前
|
Java Android开发
Java Socket编程示例:服务器开启在8080端口监听,接收客户端连接并打印消息。
【6月更文挑战第23天】 Java Socket编程示例:服务器开启在8080端口监听,接收客户端连接并打印消息。客户端连接服务器,发送"Hello, Server!"后关闭。注意Android中需避免主线程进行网络操作。
134 4
|
8月前
|
SQL Oracle 关系型数据库
改变Oracle数据库连接端口
改变Oracle数据库连接端口
107 4
|
9月前
|
SQL 关系型数据库 MySQL
3. 查询和连接
3. 查询和连接
|
弹性计算 安全 关系型数据库
介绍两种连接方式
介绍两种连接方式
202 1
|
SQL 大数据 API
连接操作_连接类型_fullouter | 学习笔记
快速学习连接操作_连接类型_fullouter
115 0
连接操作_连接类型_fullouter | 学习笔记
|
SQL 大数据 开发者
连接操作_连接类型_left | 学习笔记
快速学习连接操作_连接类型_left
119 0
连接操作_连接类型_left | 学习笔记
|
SQL 分布式计算 大数据
连接操作_连接类型_cross | 学习笔记
快速学习连接操作_连接类型_cross
155 0
连接操作_连接类型_cross | 学习笔记
|
弹性计算 安全 关系型数据库
实例连接管理 | 学习笔记
快速学习实例连接管理
实例连接管理 | 学习笔记
|
弹性计算 Linux 网络安全
连接服务器的几种方式
本文撰写了3种连接阿里云服务器的方式
3662 2
连接服务器的几种方式