From 32b02527dee68922972104f32468229d9efb8772 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=BD=97=E7=A5=A5?= <1366971433@qq.com>
Date: Thu, 23 May 2019 16:48:26 +0800
Subject: [PATCH] =?UTF-8?q?spark=20sql=E8=81=94=E7=BB=93=E6=93=8D=E4=BD=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 4 +-
.../src/main/java/rdd/scala/SparkSqlApp.scala | 43 +---
notes/SparkSQL常用聚合函数.md | 4 +-
notes/SparkSQL联结操作.md | 146 ++++++++++-
notes/Spark_Structured_API的基本使用.md | 229 +++++++++++-------
pictures/spark-Big-table–to–big-table.png | Bin 0 -> 132077 bytes
.../spark-Big-table–to–small-table.png | Bin 0 -> 98113 bytes
pictures/spark-sql-NATURAL-JOIN.png | Bin 0 -> 38789 bytes
8 files changed, 287 insertions(+), 139 deletions(-)
create mode 100644 pictures/spark-Big-table–to–big-table.png
create mode 100644 pictures/spark-Big-table–to–small-table.png
create mode 100644 pictures/spark-sql-NATURAL-JOIN.png
diff --git a/README.md b/README.md
index 1c36e67..026f438 100644
--- a/README.md
+++ b/README.md
@@ -83,9 +83,9 @@
1. [DateFrames 和 DataSets ](https://github.com/heibaiying/BigData-Notes/blob/master/notes/SparkSQL_Dataset和DataFrame简介.md)
2. [Structured API的基本使用](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Spark_Structured_API的基本使用.md)
-3. 外部数据源
+3. [Spark SQL数据源]
4. [Spark SQL常用聚合函数](https://github.com/heibaiying/BigData-Notes/blob/master/notes/SparkSQL常用聚合函数.md)
-5. 联结操作
+5. [Spark SQL JOIN 操作](https://github.com/heibaiying/BigData-Notes/blob/master/notes/SparkSQL联结操作.md)
**Spark Streaming :**
diff --git a/code/spark/spark-core/src/main/java/rdd/scala/SparkSqlApp.scala b/code/spark/spark-core/src/main/java/rdd/scala/SparkSqlApp.scala
index ac5e6f3..5bdfa93 100644
--- a/code/spark/spark-core/src/main/java/rdd/scala/SparkSqlApp.scala
+++ b/code/spark/spark-core/src/main/java/rdd/scala/SparkSqlApp.scala
@@ -11,46 +11,17 @@ object SparkSqlApp {
val spark = SparkSession.builder().appName("aggregations").master("local[2]").getOrCreate()
- val empDF = spark.read.json("/usr/file/json/emp.json")
- empDF.createOrReplaceTempView("emp")
+ val df = spark.read.json("/usr/file/json/emp.json")
- val deptDF = spark.read.json("/usr/file/json/dept.json")
- deptDF.createOrReplaceTempView("dept")
+ import spark.implicits._
- deptDF.printSchema()
+ df.select($"ename").limit(5).show()
+ df.sort("sal").limit(3).show()
- // 1.定义联结表达式
- val joinExpression = empDF.col("deptno") === deptDF.col("deptno")
- // 2.联结查询
- empDF.join(deptDF, joinExpression).select("ename", "dname").show()
- spark.sql("SELECT ename,dname FROM emp JOIN dept ON emp.deptno = dept.deptno").show()
+ df.orderBy(desc("sal")).limit(3).show()
+ df.select("deptno").distinct().show()
- empDF.join(deptDF, joinExpression, "outer").show()
- spark.sql("SELECT * FROM emp FULL OUTER JOIN dept ON emp.deptno = dept.deptno").show()
-
- empDF.join(deptDF, joinExpression, "left_outer").show()
- spark.sql("SELECT * FROM emp LEFT OUTER JOIN dept ON emp.deptno = dept.deptno").show()
-
- empDF.join(deptDF, joinExpression, "right_outer").show()
- spark.sql("SELECT * FROM emp RIGHT OUTER JOIN dept ON emp.deptno = dept.deptno").show()
-
- empDF.join(deptDF, joinExpression, "left_semi").show()
- spark.sql("SELECT * FROM emp LEFT SEMI JOIN dept ON emp.deptno = dept.deptno").show()
-
- empDF.join(deptDF, joinExpression, "left_anti").show()
- spark.sql("SELECT * FROM emp LEFT ANTI dept ON emp.deptno = dept.deptno").show()
-
- /*你绝对应该使用交叉连接,100%确定这是你需要的。 在Spark中定义交叉连接时,有一个原因需要明确。 他们很危险!
- 高级用户可以将会话级配置spark.sql.crossJoin.enable设置为true,以便允许交叉连接而不发出警告,或者Spark没有尝试为您执行另一个连接。*/
- empDF.join(deptDF, joinExpression, "cross").show()
- spark.sql("SELECT * FROM emp CROSS JOIN dept ON emp.deptno = dept.deptno").show()
-
-
-
-
-
-
- spark.sql("SELECT * FROM graduateProgram NATURAL JOIN person").show()
+ df.orderBy(desc("deptno"), asc("sal")).show(2)
}
}
diff --git a/notes/SparkSQL常用聚合函数.md b/notes/SparkSQL常用聚合函数.md
index a309ad0..d9caa61 100644
--- a/notes/SparkSQL常用聚合函数.md
+++ b/notes/SparkSQL常用聚合函数.md
@@ -20,6 +20,7 @@
3.2 无类型的自定义聚合函数
+
## 一、简单聚合
### 1.1 数据准备
@@ -336,6 +337,3 @@ object SparkSqlApp {
## 参考资料
1. Matei Zaharia, Bill Chambers . Spark: The Definitive Guide[M] . 2018-02
-
-
-
diff --git a/notes/SparkSQL联结操作.md b/notes/SparkSQL联结操作.md
index 1c1d36c..ed4f174 100644
--- a/notes/SparkSQL联结操作.md
+++ b/notes/SparkSQL联结操作.md
@@ -1,10 +1,22 @@
-## 一、简介
+# Spark SQL JOIN
+
+## 一、 数据准备
-## 二、 数据准备
-
-分别创建员工和部门datafame,并注册为临时视图,代码如下:
+本文主要介绍Spark的多表连接,需要预先准备测试数据。分别创建员工和部门的datafame,并注册为临时视图,代码如下:
```scala
val spark = SparkSession.builder().appName("aggregations").master("local[2]").getOrCreate()
@@ -16,7 +28,7 @@ val deptDF = spark.read.json("/usr/file/json/dept.json")
deptDF.createOrReplaceTempView("dept")
```
-两表字段中所有字段如下:
+两表的主要字段如下:
```properties
emp员工表
@@ -41,17 +53,133 @@ dept部门表
-## 三、联结操作
+## 二、连接类型
-### 3.1 Inner Joins
+Spark中支持多种连接类型:
+
++ Inner joins : 内连接;
++ Full Outer joins : 全外连接;
++ Left outer joins : 左外连接;
++ Right outer joins : 右外连接;
++ Left semi joins : 左半连接;
++ Left anti joins : 左反连接;
++ Natural joins : 自然连接;
++ Cross (or Cartesian) joins : 交叉(或笛卡尔)连接。
+
+其中内,外连接,笛卡尔积均与普通关系型数据库中的相同,如下图所示:
+
+
+
+这里解释一下左半连接和左反连接,这两个连接等价于关系型数据库中的IN和NOT IN字句:
+
+```sql
+-- LEFT SEMI JOIN
+SELECT * FROM emp LEFT SEMI JOIN dept ON emp.deptno = dept.deptno
+-- 等价于如下的IN语句
+SELECT * FROM emp WHERE deptno IN (SELECT deptno FROM dept)
+
+-- LEFT ANTI JOIN
+SELECT * FROM emp LEFT ANTI JOIN dept ON emp.deptno = dept.deptno
+-- 等价于如下的IN语句
+SELECT * FROM emp WHERE deptno NOT IN (SELECT deptno FROM dept)
+```
+
+所有连接类型的示例代码如下:
+
+### 2.1 INNER JOIN
```scala
-// 1.定义联结表达式
+// 1.定义连接表达式
val joinExpression = empDF.col("deptno") === deptDF.col("deptno")
-// 2.联结查询
+// 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()
```
+### 2.2 FULL OUTER JOIN
+
+```scala
+empDF.join(deptDF, joinExpression, "outer").show()
+spark.sql("SELECT * FROM emp FULL OUTER JOIN dept ON emp.deptno = dept.deptno").show()
+```
+
+### 2.3 LEFT OUTER JOIN
+
+```scala
+empDF.join(deptDF, joinExpression, "left_outer").show()
+spark.sql("SELECT * FROM emp LEFT OUTER JOIN dept ON emp.deptno = dept.deptno").show()
+```
+
+### 2.4 RIGHT OUTER JOIN
+
+```scala
+empDF.join(deptDF, joinExpression, "right_outer").show()
+spark.sql("SELECT * FROM emp RIGHT OUTER JOIN dept ON emp.deptno = dept.deptno").show()
+```
+
+### 2.5 LEFT SEMI JOIN
+
+```scala
+empDF.join(deptDF, joinExpression, "left_semi").show()
+spark.sql("SELECT * FROM emp LEFT SEMI JOIN dept ON emp.deptno = dept.deptno").show()
+```
+
+### 2.6 LEFT ANTI JOIN
+
+```scala
+empDF.join(deptDF, joinExpression, "left_anti").show()
+spark.sql("SELECT * FROM emp LEFT ANTI JOIN dept ON emp.deptno = dept.deptno").show()
+```
+
+### 2.7 CROSS JOIN
+
+```scala
+empDF.join(deptDF, joinExpression, "cross").show()
+spark.sql("SELECT * FROM emp CROSS JOIN dept ON emp.deptno = dept.deptno").show()
+```
+
+### 2.8 NATURAL JOIN
+
+自然连接是在两张表中寻找那些数据类型和列名都相同的字段,然后自动地将他们连接起来,并返回所有符合条件的结果。
+
+```scala
+spark.sql("SELECT * FROM emp NATURAL JOIN dept").show()
+```
+
+以下是一个自然连接的查询结果,程序自动推断出使用两张表都存在的dept列进行连接,其实际等价于:
+
+```sql
+spark.sql("SELECT * FROM emp JOIN dept ON emp.deptno = dept.deptno").show()
+```
+
+
+
+由于自然连接常常会产生不可预期的结果,所以并不推荐使用。
+
+
+
+## 三、连接的执行
+
+在对大表与大表之间进行连接操作时,通常都会触发shuffle join,两表的所有分区节点会进行All-to-All的通讯,这种查询通常比较昂贵,会对网络IO会造成比较大的负担。
+
+
+
+
+
+而对于大表和小表的连接操作,Spark会在一定程度上进行优化,如果小表的数据量小于Work Node上内存空间,Spark会考虑将小表的数据广播到每一个工作节点,在每个工作节点内部执行连接计算,这可以降低网络的IO,但会加大每个工作节点上的CPU负担。
+
+
+
+是否采用广播方式进行JOIN取决于程序内部的判断,如果想明确使用广播方式进行JOIN,可以在DataFrame API 中使用`broadcast`方法显示指定需要广播的小表:
+
+```scala
+empDF.join(broadcast(deptDF), joinExpression).show()
+```
+
+
+
+## 参考资料
+
+1. Matei Zaharia, Bill Chambers . Spark: The Definitive Guide[M] . 2018-02
\ No newline at end of file
diff --git a/notes/Spark_Structured_API的基本使用.md b/notes/Spark_Structured_API的基本使用.md
index 6525fcf..69ab3d1 100644
--- a/notes/Spark_Structured_API的基本使用.md
+++ b/notes/Spark_Structured_API的基本使用.md
@@ -1,94 +1,39 @@
# Structured API基本使用
-## 一、创建DataFrames
+## 一、创建DataFrame和Dataset
+
+### 1.1 创建DataFrame
Spark中所有功能的入口点是`SparkSession`,可以使用`SparkSession.builder()`创建。创建后应用程序就可以从现有RDD,Hive表或Spark数据源创建DataFrame。如下所示:
```scala
val spark = SparkSession.builder().appName("Spark-SQL").master("local[2]").getOrCreate()
-val df = spark.read.json("/usr/file/emp.json")
+val df = spark.read.json("/usr/file/json/emp.json")
df.show()
// 建议在进行spark SQL编程前导入下面的隐式转换,因为DataFrames和dataSets中很多操作都依赖了隐式转换
import spark.implicits._
```
-这里可以启动`spark-shell`进行测试,需要注意的是`spark-shell`启动后会自动创建一个名为`spark`的`SparkSession`,在命令行中可以直接引用即可:
+可以使用`spark-shell`进行测试,需要注意的是`spark-shell`启动后会自动创建一个名为`spark`的`SparkSession`,在命令行中可以直接引用即可:
-## 二、DataFrames基本操作
+
-### 2.1 printSchema
+### 1.2 创建Dataset
-```scala
-// 以树形结构打印dataframe的schema信息
-df.printSchema()
-```
+Spark支持由内部数据集和外部数据集来创建DataSets,其创建方式分别如下:
-
-
-### 2.2 使用DataFrame API进行基本查询
-
-```scala
-// 查询员工姓名及工作
-df.select($"ename", $"job").show()
-
-// 查询工资大于2000的员工信息
-df.filter($"sal" > 2000).show()
-
-// 分组统计部门人数
-df.groupBy("deptno").count().show()
-```
-
-### 2.3 使用SQL进行基本查询
-
-```scala
-// 首先需要将DataFrame注册为临时视图
-df.createOrReplaceTempView("emp")
-
-// 查询员工姓名及工作
-spark.sql("SELECT ename,job FROM emp").show()
-
-// 查询工资大于2000的员工信息
-spark.sql("SELECT * FROM emp where sal > 2000").show()
-
-// 分组统计部门人数
-spark.sql("SELECT deptno,count(ename) FROM emp group by deptno").show()
-```
-
-### 2.4 全局临时视图
-
-上面使用`createOrReplaceTempView`创建的是会话临时视图,它的生命周期仅限于会话范围,会随会话的结束而结束。
-
-你也可以使用`createGlobalTempView`创建全局临时视图,全局临时视图可以在所有会话之间共享,并直到整个Spark应用程序终止才会消失。全局临时视图被定义在内置的`global_temp`数据库下,需要使用限定名称进行引用,如`SELECT * FROM global_temp.view1`。
-
-```scala
-// 注册为全局临时视图
-df.createGlobalTempView("gemp")
-
-// 查询员工姓名及工作,使用限定名称进行引用
-spark.sql("SELECT ename,job FROM global_temp.gemp").show()
-
-// 查询工资大于2000的员工信息,使用限定名称进行引用
-spark.sql("SELECT * FROM global_temp.gemp where sal > 2000").show()
-
-// 分组统计部门人数,使用限定名称进行引用
-spark.sql("SELECT deptno,count(ename) FROM global_temp.gemp group by deptno").show()
-```
-
-## 三、创建Datasets
-
-### 3.1 由外部数据集创建
+#### 1. 由外部数据集创建
```scala
// 1.需要导入隐式转换
@@ -103,7 +48,7 @@ val ds = spark.read.json("/usr/file/emp.json").as[Emp]
ds.show()
```
-### 3.2 由内部数据集创建
+#### 2. 由内部数据集创建
```scala
// 1.需要导入隐式转换
@@ -120,29 +65,13 @@ val caseClassDS = Seq(Emp("ALLEN", 300.0, 30, 7499, "1981-02-20 00:00:00", "SALE
caseClassDS.show()
```
+
-
-## 四、DataFrames与Datasets互相转换
-
-Spark提供了非常简单的转换方法用于DataFrames与Datasets互相转换,示例如下:
-
-```shell
-# DataFrames转Datasets
-scala> df.as[Emp]
-res1: org.apache.spark.sql.Dataset[Emp] = [COMM: double, DEPTNO: bigint ... 6 more fields]
-
-# Datasets转DataFrames
-scala> ds.toDF()
-res2: org.apache.spark.sql.DataFrame = [COMM: double, DEPTNO: bigint ... 6 more fields]
-```
-
-
-
-## 五、RDDs转换为DataFrames\Datasets
+### 1.3 由RDD创建DataFrame
Spark支持两种方式把RDD转换为DataFrames,分别是使用反射推断和指定schema转换。
-### 5.1 使用反射推断
+#### 1. 使用反射推断
```scala
// 1.导入隐式转换
@@ -159,7 +88,7 @@ val rddToDS = spark.sparkContext
.toDS() // 如果调用toDF()则转换为dataFrame
```
-### 5.2 以编程方式指定Schema
+#### 2. 以编程方式指定Schema
```scala
import org.apache.spark.sql.Row
@@ -184,6 +113,128 @@ val deptDF = spark.createDataFrame(rowRDD, schema)
deptDF.show()
```
+### 1.4 DataFrames与Datasets互相转换
+
+Spark提供了非常简单的转换方法用于DataFrames与Datasets互相转换,示例如下:
+
+```shell
+# DataFrames转Datasets
+scala> df.as[Emp]
+res1: org.apache.spark.sql.Dataset[Emp] = [COMM: double, DEPTNO: bigint ... 6 more fields]
+
+# Datasets转DataFrames
+scala> ds.toDF()
+res2: org.apache.spark.sql.DataFrame = [COMM: double, DEPTNO: bigint ... 6 more fields]
+```
+
+
+
+## 二、Columns列操作
+
+### 2.1 引用列
+
+Spark支持多种方法来构造和引用列,最简单的是使用 `col() `或 `column() `函数。
+
+```scala
+col("colName")
+column("colName")
+
+// 对于Scala语言而言,还可以使用$"myColumn"和'myColumn这两种语法糖进行引用。
+df.select($"ename", $"job").show()
+df.select('ename, 'job).show()
+```
+
+### 2.2 新增列
+
+```scala
+// 基于已有列值新增列
+df.withColumn("upSal",$"sal"+1000)
+// 基于固定值新增列
+df.withColumn("intCol",lit(1000))
+```
+
+### 2.3 删除列
+
+```scala
+// 支持删除多个列
+df.drop("comm","job").show()
+```
+
+### 2.4 重命名列
+
+```scala
+df.withColumnRenamed("comm", "common").show()
+```
+
+需要说明的是新增,删除,重命名列都会产生新的DataFrame,原来的DataFrame不会被改变。
+
+
+
+## 三、使用Structured API进行基本查询
+
+```scala
+// 1.查询员工姓名及工作
+df.select($"ename", $"job").show()
+
+// 2.filter 查询工资大于2000的员工信息
+df.filter($"sal" > 2000).show()
+
+// 3.orderBy 按照部门编号降序,工资升序进行查询
+df.orderBy(desc("deptno"), asc("sal")).show()
+
+// 4.limit 查询工资最高的3名员工的信息
+df.orderBy(desc("sal")).limit(3).show()
+
+// 5.distinct 查询所有部门编号
+df.select("deptno").distinct().show()
+
+// 6.groupBy 分组统计部门人数
+df.groupBy("deptno").count().show()
+```
+
+
+
+## 四、使用Spark SQL进行基本查询
+
+### 4.1 Spark SQL基本使用
+
+```scala
+// 1.首先需要将DataFrame注册为临时视图
+df.createOrReplaceTempView("emp")
+
+// 2.查询员工姓名及工作
+spark.sql("SELECT ename,job FROM emp").show()
+
+// 3.查询工资大于2000的员工信息
+spark.sql("SELECT * FROM emp where sal > 2000").show()
+
+// 4.orderBy 按照部门编号降序,工资升序进行查询
+spark.sql("SELECT * FROM emp ORDER BY deptno DESC,sal ASC").show()
+
+// 5.limit 查询工资最高的3名员工的信息
+spark.sql("SELECT * FROM emp ORDER BY sal DESC LIMIT 3").show()
+
+// 6.distinct 查询所有部门编号
+spark.sql("SELECT DISTINCT(deptno) FROM emp").show()
+
+// 7.分组统计部门人数
+spark.sql("SELECT deptno,count(ename) FROM emp group by deptno").show()
+```
+
+### 4.2 全局临时视图
+
+上面使用`createOrReplaceTempView`创建的是会话临时视图,它的生命周期仅限于会话范围,会随会话的结束而结束。
+
+你也可以使用`createGlobalTempView`创建全局临时视图,全局临时视图可以在所有会话之间共享,并直到整个Spark应用程序终止才会消失。全局临时视图被定义在内置的`global_temp`数据库下,需要使用限定名称进行引用,如`SELECT * FROM global_temp.view1`。
+
+```scala
+// 注册为全局临时视图
+df.createGlobalTempView("gemp")
+
+// 使用限定名称进行引用
+spark.sql("SELECT ename,job FROM global_temp.gemp").show()
+```
+
## 参考资料
diff --git a/pictures/spark-Big-table–to–big-table.png b/pictures/spark-Big-table–to–big-table.png
new file mode 100644
index 0000000000000000000000000000000000000000..091a64268f00c6a1cc3bd41f8ec995cf7f9b9191
GIT binary patch
literal 132077
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%0A4V=Q<+^%oT*KC(;
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ⅆ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