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

相关文章
|
9月前
|
数据采集 人工智能 分布式计算
MCP+Hologres+LLM搭建数据分析Agent
本文探讨了LLM大模型在数据分析领域的挑战,并介绍了Hologres结合MCP协议和LLM搭建数据分析Agent的解决方案。传统LLM存在实时数据接入能力不足、上下文记忆短等问题,而Hologres通过高性能数据分析能力和湖仓一体支持,解决了这些痛点。MCP协议标准化了LLM与外部系统的连接,提升集成效率。文中详细描述了如何配置Hologres MCP Server与Claude Desktop集成,并通过TPC-H样例数据展示了分析流程和效果。最后总结指出,该方案显著提高了复杂分析任务的实时性和准确性,为智能决策提供支持。
vtkdicom0.8_vtk9.2_dcmtk3.6.7_qt6.2编译OK
本文介绍了如何编译整合VTK 9.2、DICOM 0.8、DCMTK 3.6.7和Qt 6.2的步骤,包括安装Qt、CMake配置以及确认相关路径和版本设置。
411 1
vtkdicom0.8_vtk9.2_dcmtk3.6.7_qt6.2编译OK
|
弹性计算 负载均衡 Cloud Native
阿里云负载均衡SLB版本CLB、ALB和NLB有什么区别如何选择?
最初阿里云只有一种传统的负载均衡SLB,这款SLB实例是四层负载均衡;后来在传统的SLB基础上推出七层负载均衡ALB,原四层SLB改名为CLB;后来又推出基于NFV虚拟化平台,支持弹性伸缩的网络型负载均衡NLB
10638 24
阿里云负载均衡SLB版本CLB、ALB和NLB有什么区别如何选择?
|
存储 Java
【Java】深入理解Java中的static关键字
【Java】深入理解Java中的static关键字
474 0
|
负载均衡 安全 前端开发
深入理解微服务架构中的API网关
【7月更文挑战第4天】本文旨在探讨微服务架构中的关键组件——API网关,分析其作用、设计原则及实现方式。通过对比不同场景下的应用实例,揭示API网关在微服务生态系统中的重要性和实现细节。
259 2
|
测试技术
如何高质量的做BUG分析
如何高质量的做BUG分析
490 0
|
NoSQL MongoDB
解决 :MongoDB couldn‘t add user: not authorized on ‘your db‘ to execute command
解决 :MongoDB couldn‘t add user: not authorized on ‘your db‘ to execute command
913 0
|
Java Maven
Mac安装Maven(图文解说详细版)
Mac安装Maven(图文解说详细版)
Mac安装Maven(图文解说详细版)
|
运维 Prometheus Kubernetes
直播预告丨如何使用 KubeSkoop exporter 监测和定位容器网络抖动问题
直播预告丨如何使用 KubeSkoop exporter 监测和定位容器网络抖动问题
|
缓存 安全 Java
spring怎么实现单例模式
spring怎么实现单例模式
790 0
spring怎么实现单例模式