Spark?SQL是Spark用于处理结构化数据的一个模块。本书共8章内容,由浅入深地讲解Spark?SQL的基础知识、安装部署、编程基础、编程进阶、函数、性能调优技巧以及编程实践等知识。通过本书的学习,读者能够掌握Spark?SQL核心技术。本书每章安排了习题和总结,以便使读者能更好地学习和更牢固地掌握Spark?SQL编程方法。此外,本书还提供了PPT教学课件、源代码等配套资源,供使用本书的读者下载。
本书可作为高等学校大数据、计算机、统计相关专业学生的大数据进阶课程的教材,也可供相关技术人员学习参考。
1、本书由Spark项目经验丰富的作者编写,作者之一为加米谷大数据公司张安文(国家大数据标准组成员、大数据架构师,大数据实战开发者),项目开发经验丰富。
2、本书主要讲Spark SQL的深度理论知识及实践,市面上关于Spark的书籍绝大多数讲整个Spark的知识,在有广度的情况下很难兼顾到深度。本书的特点是只关注Spark整套理论中的Spark SQL细分技术领域,关于Spark SQL的所有知识点会进行讲解,并有针对性的代码实践,从理论到实践让读者掌握深层次的Spark SQL技术,做到精通这门技术。
3、本书的读者更多会针对大数据领域数据分析方向的从业人员,使读者能够使用Spark SQL的知识来解决企业中遇到的问题,书中会有大量的实践内容,包括代码及相关项目中的实践,做到理论与实践相结合。
本书编写立足于浅显易懂而又不失深度,从0起步让读者了解、熟悉并掌握该技术,读者适用群体广泛。
杨虹 重庆市半导体行业协会副理事长,重庆市电子学会常务理事,重庆市高校青年骨干教师。 张安文 加米谷大数据负责人,国家大数据标准组成员、大数据架构师,大数据实战开发者。
第1章 Spark SQL基础知识 1
1.1 Spark SQL背景 1
1.2 Spark SQL简介 1
1.2.1 Spark SQL的特点 2
1.2.2 Spark SQL的用途 2
1.2.3 Spark SQL的使用场景 2
1.3 为什么要学习Spark SQL 3
1.4 Spark SQL的原理 3
1.4.1 传统SQL的运行原理 3
1.4.2 Spark SQL的运行原理 4
1.4.3 Spark SQL的开发步骤 6
1.5 Spark SQL的运行模式 7
1.5.1 Local模式 7
1.5.2 Standalone模式 7
1.5.3 OnYarn模式 8
小结 11
习题 11
第2章 Spark SQL安装部署 12
2.1 运行环境说明 12
2.1.1 操作系统说明 12
2.1.2 Java版本说明 12
2.1.3 Scala版本说明 12
2.1.4 操作系统客户端工具说明 13
2.2 运行环境准备 13
2.2.1 依赖下载 13
2.2.2 安装Java 14
2.2.3 安装Scala 14
2.3 部署Spark SQL 15
2.3.1 下载安装包 15
2.3.2 单机部署 15
2.3.3 集群部署 16
2.3.4 运行环境参数 21
小结 23
习题 23
第3章 个Spark SQL应用程序 24
3.1 搭建开发环境 24
3.1.1 下载开发工具 24
3.1.2 安装IDEA 25
3.2 编写Spark SQL应用程序 26
3.2.1 Spark SQL应用程序的编写
步骤 27
3.2.2 编写个Spark SQL应用
程序 27
3.2.3 运行个Spark SQL应用
程序 38
小结 44
习题 44
第4章 Spark SQL编程基础 45
4.1 RDD概述 45
4.1.1 RDD的优缺点 45
4.1.2 RDD模型介绍 46
4.2 深入剖析RDD 47
4.2.1 Spark相关专业术语定义 47
4.2.2 Spark Application的构成 55
4.2.3 Spark运行的基本流程 55
4.2.4 Spark运行架构的特点 56
4.2.5 Spark核心原理 58
4.3 创建RDD 62
4.4 RDD操作 65
4.4.1 RDD转换操作 65
4.4.2 RDD控制操作 72
4.4.3 RDD行动操作 73
4.5 RDD持久化 76
4.5.1 持久化优势 77
4.5.2 持久化策略 77
4.6 RDD容错机制 78
4.6.1 lineage机制 78
4.6.2 checkpoint机制 79
小结 81
习题 81
第5章 Spark SQL编程进阶 82
5.1 概述 82
5.2 SparkSession 82
5.2.1 SparkSession介绍 82
5.2.2 创建SparkSession 82
5.2.3 SparkSession参数设置 85
5.2.4 SparkSession元信息读取 85
5.3 DataFrame 85
5.3.1 深入理解DataFrame 86
5.3.2 DataFrame的优缺点 86
5.3.3 DataFrame的演变过程 87
5.3.4 DataFrame的使用形式 89
5.3.5 创建DataFrame 89
5.3.6 DataFrame操作 102
5.3.7 DataFrame持久化 114
5.3.8 DataFrame实例 117
5.4 DataSet 120
5.4.1 深入理解DataSet 120
5.4.2 DataSet的优点 120
5.4.3 创建DataSet 121
5.4.4 DataSet操作 121
5.4.5 DataSet持久化 122
5.5 数据抽象的共性与区别 122
5.5.1 3种数据抽象的共性 123
5.5.2 3种数据抽象的区别 123
5.6 数据抽象的相互转换 123
5.6.1 将RDD转换为DataFrame 124
5.6.2 将DataFrame转换为
DataSet 124
5.6.3 将DataSet转换为
DataFrame 124
小结 125
习题 125
第6章 Spark SQL函数 126
6.1 用户定义函数 126
6.1.1 注册UDF 126
6.1.2 使用UDF 126
6.1.3 UDF实例 127
6.2 用户定义聚合函数 128
6.2.1 注册UDAF 129
6.2.2 使用UDAF 129
6.2.3 UDAF实例 129
6.3 常用内置函数 131
小结 131
习题 131
第7章 Spark SQL性能调优 133
7.1 概述 133
7.1.1 木桶原理 133
7.1.2 阿姆达尔定律 134
7.2 并行度调优 134
7.2.1 什么是并行度 134
7.2.2 为什么需要对并行度进行
调优 134
7.2.3 如何合理设置并行度 135
7.3 内存调优 135
7.3.1 为什么需要对内存进行
调优 136
7.3.2 如何充分使用内存 136
7.4 磁盘I/O调优 137
7.4.1 为什么需要对磁盘I/O进行
调优 137
7.4.2 如何充分使用磁盘I/O 138
7.5 网络I/O调优 139
7.5.1 为什么需要对网络I/O进行
调优 139
7.5.2 如何充分使用网络I/O 139
小结 140
习题 140
第8章 Spark SQL编程实践 141
8.1 Spark SQL实践一学生考试
信息分析 141
8.2 Spark SQL实践二生鲜电商
交易数据分析 142
8.3 Spark SQL实践三四川省
新生婴儿信息分析 144
小结 152
附录 153
附录1 常用内置函数 153
附录1.1 常用聚合函数 153
附录1.2 常用排序函数 156
附录1.3 常用字符串函数 157
附录1.4 常用时间函数 162
附录1.5 常用数学函数 167
附录1.6 常用集合函数 170
附录1.7 其他常用函数 172
附录2 常用高阶函数 173
附录2.1 transform函数 173
附录2.2 aggregate函数 174
附录2.3 filter函数 174
附录2.4 exists函数 175
附录2.5 zip_with函数 175
附录3 术语解释 175