《Spark编程基础(Scala版 第2版)》教材目录

《Spark编程基础(Scala版 第2版)》教材目录

林子雨,赖永炫,陶继平 编著

访问教材官网

第 1 章 大数据技术概述 ……….. 1

1.1 大数据的概念与关键技术……………..1

1.1.1 大数据的概念……………………………. 1

1.1.2 大数据关键技术 ………………………… 2

1.2 代表性大数据技术 ……………………..3

1.2.1 Hadoop …………………………………….. 3

1.2.2 Spark ……………………………………….. 6

1.2.3 Flink………………………………………….9

1.2.4 Beam……………………………………….11

1.3 编程语言的选择……………………….12

1.3.1 不同编程语言简介 ……………………12

1.3.2 Spark 开发语言对比…………………13

1.4 在线资源 ……………………………….14

1.5 本章小结 ……………………………….14

1.6 习题……………………………………..14

实验 1 Linux 操作系统的安装和常用

命令 …………………………………15

第 2 章 Scala 语言基础 …….. 17

2.1 Scala 语言概述……………………….17

2.1.1 计算机的缘起…………………………..17

2.1.2 编程范式………………………………….18

2.1.3 Scala 简介………………………………..19

2.1.4 Scala 的安装…………………………….20

2.1.5 编写及运行 HelloWorld 程序……21

2.2 Scala 基础知识……………………….22

2.2.1 基本数据类型和变量 ………………..22

2.2.2 I/O …………………………………………..25

2.2.3 控制结构………………………………….26

2.2.4 数据结构………………………………….30

2.3 面向对象编程基础 ……………………35

2.3.1 类…………………………………………….35

2.3.2 对象…………………………………………40

2.3.3 继承…………………………………………44

2.3.4 参数化类型……………………………… 47

2.3.5 特质………………………………………… 49

2.3.6 模式匹配…………………………………. 52

2.3.7 包……………………………………………. 55

2.4 函数式编程基础……………………….56

2.4.1 函数的定义与使用…………………… 56

2.4.2 高阶函数…………………………………. 57

2.4.3 闭包………………………………………… 58

2.4.4 偏应用函数和柯里化……………….. 59

2.4.5 针对容器的操作……………………….60

2.4.6 函数式编程实例………………………. 65

2.5 本章小结 ……………………………… 66

2.6 习题……………………………………. 66

实验 2 Scala 编程初级实践 ……………..67

第 3 章 Spark 的设计与运行

原理…………………… 71

3.1 概述……………………………………..71

3.2 Spark 生态系统 ………………………72

3.3 Spark 运行架构 ………………………74

3.3.1 基本概念…………………………………. 74

3.3.2 架构设计…………………………………. 74

3.3.3 Spark 运行基本流程 ……………….. 75

3.3.4 RDD 的设计与运行原理…………… 77

3.4 Spark 的部署模式 ……………………85

3.5 TensorFlowOnSpark…………….. 86

3.6 本章小结 ……………………………….87

3.7 习题……………………………………..87

第 4 章 Spark 环境搭建和使用

方法……………………88

4.1 安装 Spark…………………………… 88

4.1.1 基础环境…………………………………. 88

4.1.2 下载安装文件………………………….. 89

4.1.3 配置相关文件…………………………..90

4.1.4 Spark 和 Hadoop 的交互………….90

4.2 在 spark-shell 中运行代码 ………..91

4.2.1 “spark-shell”命令 …………………91

4.2.2 启动 spark-shell ……………………..92

4.2.3 Spark 用户界面 ……………………….92

4.3 开发 Spark 独立应用程序…………..93

4.3.1 安装编译打包工具……………………93

4.3.2 编写 Spark 应用程序代码…………94

4.3.3 编译打包………………………………….95

4.3.4 通过“spark-submit”命令

提交并运行程序……………………….97

4.4 Spark 集群环境搭建…………………98

4.4.1 集群概况………………………………….98

4.4.2 搭建 Hadoop 集群…………………….98

4.4.3 在集群中安装 Spark ………………..99

4.4.4 配置环境变量…………………………..99

4.4.5 Spark 的配置 …………………………..99

4.4.6 启动 Spark 集群 …………………… 100

4.4.7 关闭 Spark 集群 …………………….101

4.5 在集群上运行 Spark 应用程序 …..101

4.5.1 启动 Spark 集群 …………………….101

4.5.2 在集群中运行应用程序 JAR 包 …101

4.5.3 在集群中运行 spark-shell ……..101

4.5.4 查看应用程序的运行情况 ……….102

4.6 本章小结 ……………………………..102

4.7 习题……………………………………102

实验 3 Spark 和 Hadoop 的安装 …….103

第 5 章 RDD 编程………….. 105

5.1 RDD 编程基础………………………105

5.1.1 RDD 创建……………………………….105

5.1.2 RDD 操作……………………………….106

5.1.3 持久化……………………………………113

5.1.4 分区……………………………………….114

5.1.5 一个综合实例…………………………118

5.2 键值对 RDD …………………………120

5.2.1 键值对 RDD 的创建………………..120

5.2.2 常用的键值对 RDD 转换操作….120

5.2.3 一个综合实例…………………………126

5.3 数据读写 ……………………………..126

5.3.1 本地文件系统的数据读写………. 127

5.3.2 HDFS 的数据读写…………………. 129

5.3.3 读写 MySQL 数据库 ……………… 129

5.4 综合实例 ……………………………..132

5.4.1 求 Top N 个数据的值 ……………. 132

5.4.2 文件排序……………………………….. 133

5.4.3 二次排序……………………………….. 134

5.5 本章小结 ……………………………..135

实验 4 RDD 编程初级实践 …………….136

第 6 章 Spark SQL……….. 139

6.1 Spark SQL 简介……………………139

6.1.1 从 Shark 说起……………………….. 139

6.1.2 Spark SQL 的架构 …………………140

6.1.3 为什么推出 Spark SQL …………. 141

6.1.4 Spark SQL 的特点 ………………… 142

6.1.5 Spark SQL 简单编程实例 ……… 142

6.2 结构化数据 DataFrame…………..144

6.2.1 DataFrame 概述……………………. 144

6.2.2 DataFrame 的优点………………… 145

6.3 DataFrame 的创建和保存………..145

6.3.1 Parquet …………………………………146

6.3.2 JSON……………………………………..146

6.3.3 CSV………………………………………. 147

6.3.4 文本文件……………………………….. 148

6.3.5 序列集合……………………………….. 148

6.4 DataFrame 的基本操作…………..149

6.4.1 DSL 语法风格……………………….. 149

6.4.2 SQL 语法风格……………………….. 151

6.5 从 RDD 转换得到 DataFrame…..153

6.5.1 利用反射机制推断 RDD 模式…. 153

6.5.2 使用编程方式定义 RDD 模式…. 154

6.6 使用 Spark SQL 读写数据库…….156

6.6.1 准备工作……………………………….. 156

6.6.2 读取 MySQL 数据库中的

数据 ……………………………………… 157

6.6.3 向 MySQL 数据库写入数据 …… 158

6.6.4 编写独立应用程序访问

MySQL…………………………………. 159

6.7 DataSet ……………………………..160

6.7.1 DataFrame、DataSet 和 RDD 的

区别……………………………………….160

6.7.2 创建 DataSet………………………….162

6.7.3 RDD、DataFrame 和 DataSet

之间的相互转换……………………..163

6.7.4 词频统计实例…………………………165

6.8 本章小结 ……………………………..165

6.9 习题……………………………………165

实验 5 Spark SQL 编程初级实践…….166

第 7 章 Spark Streaming… 168

7.1 流计算概述…………………………..168

7.1.1 静态数据和流数据 ………………….168

7.1.2 批量计算和实时计算 ………………169

7.1.3 流计算概念…………………………….170

7.1.4 流计算框架…………………………….170

7.1.5 流计算处理流程 ……………………..171

7.2 Spark Streaming ………………….172

7.2.1 Spark Streaming 简介……………172

7.2.2 Spark Streaming 与 Storm 的

对比……………………………………….173

7.2.3 从 Hadoop+Storm 架构转向

Spark 架构…………………………….173

7.3 DStream 操作概述…………………175

7.3.1 Spark Streaming 工作机制…….175

7.3.2 编写 Spark Streaming 程序的

基本步骤………………………………..175

7.3.3 创建 StreamingContext 对象 …175

7.4 基本数据源…………………………..176

7.4.1 文件流……………………………………176

7.4.2 套接字流………………………………..178

7.4.3 RDD 队列流……………………………182

7.5 高级数据源…………………………..183

7.5.1 Kafka 简介…………………………….184

7.5.2 Kafka 准备工作……………………..184

7.5.3 Spark 准备工作 ……………………..185

7.5.4 编写 Spark Streaming 程序

使用 Kafka 数据源…………………185

7.6 转换操作 ……………………………..189

7.6.1 DStream 无状态转换操作 ………189

7.6.2 DStream 有状态转换操作……… 189

7.7 输出操作 ……………………………..192

7.7.1 把 DStream 输出到文本

文件中 ………………………………….. 192

7.7.2 把 Dstream 输出到关系

数据库中 ………………………………. 193

7.8 本章小结 ……………………………..195

7.9 习题……………………………………195

实验 6 Spark Streaming 编程初级

实践………………………………..196

第 8 章 Structured

Streaming………… 197

8.1 概述……………………………………197

8.1.1 Spark Streaming 的不足之处… 198

8.1.2 Structured Streaming 的设计

理念 ……………………………………… 198

8.1.3 Structured Streaming 的处理

模型 ……………………………………… 199

8.1.4 Structured Streaming 和 Spark

SQL、Spark Streaming 的

关系 ………………………………………200

8.1.5 Structured Streaming 与其他

流处理技术的对比………………….201

8.2 Structured Streaming 程序的编写

与测试运行 …………………………..201

8.2.1 编写程序………………………………..202

8.2.2 测试运行………………………………..203

8.3 输入源 ………………………………..205

8.3.1 File 源……………………………………205

8.3.2 Kafka 源………………………………..210

8.3.3 Socket 源………………………………. 213

8.3.4 Rate 源 …………………………………. 213

8.4 输出操作 ……………………………..216

8.4.1 启动流计算……………………………. 216

8.4.2 输出模式……………………………….. 216

8.4.3 输出接收器……………………………. 217

8.5 容错处理 ……………………………..219

8.5.1 通过检查点恢复故障……………… 219

8.5.2 故障恢复中的限制…………………. 219

8.6 迟到数据处理………………………..220

8.6.1 事件时间………………………………..220

8.6.2 迟到数据………………………………..221

8.6.3 水印……………………………………….221

8.6.4 多水印规则…………………………….223

8.6.5 处理迟到数据的例子 ………………223

8.7 查询的管理和监控 ………………….227

8.7.1 管理和监控的方法 ………………….227

8.7.2 一个监控的实例 ……………………..227

8.8 本章小结 ……………………………..229

8.9 习题……………………………………230

实验 7 Structured Streaming 编程

初级实践 ………………………….230

第 9 章 Spark MLlib ………232

9.1 基于大数据的机器学习…………….232

9.2 机器学习库 MLlib 概述…………….233

9.3 基本的数据类型……………………..234

9.3.1 本地向量………………………………..234

9.3.2 标注点……………………………………234

9.3.3 本地矩阵………………………………..235

9.3.4 数据源……………………………………236

9.4 基本的统计分析工具 ……………….238

9.4.1 相关性……………………………………238

9.4.2 假设检验………………………………..239

9.4.3 汇总统计………………………………..240

9.5 机器学习流水线……………………..240

9.5.1 流水线的概念…………………………240

9.5.2 流水线的工作过程…………………. 241

9.6 特征提取、转换和选择及局部敏感

哈希……………………………………242

9.6.1 特征提取……………………………….. 242

9.6.2 特征转换………………………………..245

9.6.3 特征选择………………………………..250

9.6.4 局部敏感哈希………………………… 251

9.7 分类算法 ……………………………..251

9.7.1 逻辑斯谛回归分类算法………….. 252

9.7.2 决策树分类算法…………………….. 256

9.8 聚类算法 ……………………………..259

9.8.1 K-Means 聚类算法……………….. 259

9.8.2 GMM 聚类算法……………………… 261

9.9 频繁模式挖掘算法 ………………….264

9.9.1 FP-Growth 算法…………………… 264

9.9.2 PrefixSpan 算法……………………. 267

9.10 协同过滤算法………………………269

9.10.1 协同过滤算法的原理……………. 269

9.10.2 ALS 算法……………………………..270

9.11 模型选择 ……………………………274

9.11.1 模型选择工具………………………. 274

9.11.2 用交叉验证选择模型……………. 274

9.12 本章小结 ……………………………276

9.13 习题………………………………….277

实验 8 Spark 机器学习库 MLlib 编程

初级实践 ………………………….277