开发者学堂课程【大数据 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 怎么使用,及接收什么样的参数。