58 lines
1.2 KiB
Markdown
58 lines
1.2 KiB
Markdown
## 一、简介
|
||
|
||
|
||
|
||
## 二、 数据准备
|
||
|
||
分别创建员工和部门datafame,并注册为临时视图,代码如下:
|
||
|
||
```scala
|
||
val spark = SparkSession.builder().appName("aggregations").master("local[2]").getOrCreate()
|
||
|
||
val empDF = spark.read.json("/usr/file/json/emp.json")
|
||
empDF.createOrReplaceTempView("emp")
|
||
|
||
val deptDF = spark.read.json("/usr/file/json/dept.json")
|
||
deptDF.createOrReplaceTempView("dept")
|
||
```
|
||
|
||
两表字段中所有字段如下:
|
||
|
||
```properties
|
||
emp员工表
|
||
|-- ENAME: 员工姓名
|
||
|-- DEPTNO: 部门编号
|
||
|-- EMPNO: 员工编号
|
||
|-- HIREDATE: 入职时间
|
||
|-- JOB: 职务
|
||
|-- MGR: 上级编号
|
||
|-- SAL: 薪资
|
||
|-- COMM: 奖金
|
||
```
|
||
|
||
```properties
|
||
dept部门表
|
||
|-- DEPTNO: 部门编号
|
||
|-- DNAME: 部门名称
|
||
|-- LOC: 部门所在城市
|
||
```
|
||
|
||
> 注:emp.json,dept.json可以在本仓库的resources目录进行下载。
|
||
|
||
|
||
|
||
## 三、联结操作
|
||
|
||
### 3.1 Inner Joins
|
||
|
||
```scala
|
||
// 1.定义联结表达式
|
||
val joinExpression = empDF.col("deptno") === deptDF.col("deptno")
|
||
// 2.联结查询
|
||
empDF.join(deptDF,joinExpression).select("ename","dname").show()
|
||
|
||
// 等价SQL如下:
|
||
spark.sql("SELECT ename,dname FROM emp JOIN dept ON emp.deptno = dept.deptno").show()
|
||
```
|
||
|