连接操作_入门_介绍 | 学习笔记

简介: 快速学习连接操作_入门_介绍

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

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


连接操作_入门_介绍

 

内容介绍:

一、连接操作

1.什么是连接

2.join 的调用方式

 

一、连接操作

在连接操作部分,有两大知识点,第一个大知识点,介绍什么是连接;第二个大知识点,介绍连接的方式(种类)。

第一大知识点当中,分为两个部分,第一个部分,什么是连接的概念和介绍,然后编写案例,向大家说明什么叫做连接。在连接的种类当中,介绍多种连接种类,比如外连接,内连接,全连接,还有 cross join,左外连接,右外连接等其他类型。

本节课介绍一下什么是连接及连接的概念、作用。

在介绍什么是连接之前,先认识一下多表联查。

多表联查:

最核心的点是一次查询,查询多张表——多张表的查询是并行——多表联查本质上是一个查询,同时查询多个数据。多表联查一般是通过连接实现的,可以说连接是多表联查,但连接又不只是多表联查,连接可以连接自己。

1.什么是连接

按照 PostgreSQL 的文档中所说,只要能在一个查询中, 同一时间并 发的访问多条数据,就叫做连接。

PostgreSQL 数据库和 MySQL 相像,但它的操作支持比 MySQL 多,在国内应用的比较少

做到这件事有两种方式:

①一种是把两张表在逻辑上连接起来,一条语句中同时访问两张表

Sql 语句如下:

select * from user join address on user . address_id = address .id

user 表 joinaddress 表并生成一个新的表,on 后面的内容指代在什么情况下进行连接。

②还有一种方式就是表连接自己,一条语句也能访问自己中的多条数据

seLect * from user u1 join (select * from user) u2 on u1.id = u2.id

join 后面虽然是子查询,但子查询里面的表还是 user,所以是连接自己,访问的是自己的多条数据。

在 SparkSQL 中可以通过 join 算子进行连接。

2.join 的调用方式

join 算子的使用非常简单,大致的调用方式如下:

join (right: Dataset[ _ ],joinExprs: Column, joinType: String): DataF rame

join 中接收三个参数,join 语句 dataset1.join(dataset2)

可以理解为,dataset1 是左边,dataset2 是右边,所以 join 中传入的第一个参数就是右边的数据集,如果一直是全连接会生成笛卡尔积,会大大降低效率,所以连接需要按照一定的规则,不是所有的数据都要连接在一起,只有满足规则才能进行连接。

joinExprs 可以写 sql 语句,也可以通过 functions 进行编写。

JoinType 是连接类型,如果可以指定连接类型,那在此次连接中会有多种方式,后续会详细介绍不同类型。

通过本节,希望了解什么是连接以及在 sql 语句中 join 怎么写,在 SparkSQL dataset API 中 join 怎么使用,及接收什么样的参数。

相关文章
|
6月前
|
Prometheus 监控 数据可视化
模型被挤了?立即查看服务器GPU/CPU占用,别再误杀他人进程!
模型在服务器上跑得好好的,突然就“卡”了甚至被挤掉?别急着抱怨!本文手把手教你如何优雅地查看共享服务器的CPU和GPU占用情况,学会做一个有素质的“共享玩家”,告别模型被挤的尴尬!文末还有硬核忠告和Linux学习建议。
1065 87
|
5月前
|
JSON JavaScript 前端开发
实现ROS系统的Websocket传输,向Web应用推送sensor_msgs::Image数据
WebSocket协议具有低延迟和高实时性的特性,适用于实时数据推送。但是,它也依赖于网络条件,因此,在通过WebSocket发送数据时,保证网络稳定性也是重要的。以上步骤为建立基本的WebSocket传输提供了框架,并可以根据实际需求进行调整和优化。
482 0
|
2月前
|
算法 大数据 数据挖掘
Python循环语句:从基础到进阶的实用指南
本文深入浅出地讲解Python循环语句,涵盖for和while循环的基础与进阶用法,结合实例解析遍历、嵌套、控制流及性能优化技巧,助你掌握自动化处理数据的核心技能。
377 0
|
存储 数据处理 Kotlin
Kotlin Flow背后的神秘力量:背压、缓冲与合并策略的终极揭秘!
【9月更文挑战第13天】Kotlin Flow 是 Kotlin 协程库中处理异步数据流的强大工具,本文通过对比传统方法,深入探讨 Flow 的背压、缓冲及合并策略。背压通过 `buffer` 函数控制生产者和消费者的速率,避免过载;缓冲则允许数据暂存,使消费者按需消费;合并策略如 `merge`、`combine` 和 `zip` 则帮助处理多数据源的整合。通过这些功能,Flow 能更高效地应对复杂数据处理场景。
526 2
|
安全 关系型数据库 MySQL
Linux下安装mysql8.0(以tar.xz包安装--编译安装)
通过上述步骤,您完成了从下载、编译、安装到配置MySQL 8.0的全过程。此过程虽然较为复杂,但提供了对MySQL安装环境的完全控制,有助于满足特定的部署需求。在实际操作中,根据具体的系统环境,可能还需调整部分步骤或解决未预见的依赖问题。始终参考官方文档和社区资源,保持安装过程与最新版本的兼容性。
4919 68
|
移动开发 HTML5
Element-ui中 选择器(select)多选下拉框实现全选功能
Element-ui中 选择器(select)多选下拉框实现全选功能
1800 0
Element-ui中 选择器(select)多选下拉框实现全选功能
|
XML 定位技术 Android开发
Android中获取当前位置信息
这篇教程主要介绍了在Android平台上如何使用服务完成定位功能。众所周知,Android设备的当前位置信息,对开发创新性App、解决人们日常生活问题有极大帮助。在Android平台开发定位相关的应用程序,需要位置提供者。有两种类型的位置提供者:
1399 0
Android中获取当前位置信息