BigData-Notes/notes/SparkSQL联结操作.md
2019-05-21 17:36:54 +08:00

1.2 KiB
Raw Blame History

一、简介

二、 数据准备

分别创建员工和部门datafame并注册为临时视图代码如下

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")

两表字段中所有字段如下:

emp员工表
 |-- ENAME: 员工姓名
 |-- DEPTNO: 部门编号
 |-- EMPNO: 员工编号
 |-- HIREDATE: 入职时间
 |-- JOB: 职务
 |-- MGR: 上级编号
 |-- SAL: 薪资
 |-- COMM: 奖金  
dept部门表
 |-- DEPTNO: 部门编号
 |-- DNAME:  部门名称
 |-- LOC:    部门所在城市

emp.jsondept.json可以在本仓库的resources目录进行下载。

三、联结操作

3.1 Inner Joins

// 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()