林子雨编著《Spark编程基础》教材目录

《Spark编程基础》教材目录

厦门大学 林子雨,赖永炫,陶继平  编著

访问教材官网

E-mail:ziyulin@xmu.edu.cn

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

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

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

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

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

1.2.1 Hadoop …………………………………….. 4

1.2.2 Spark ……………………………………….. 8

1.2.3 Flink………………………………………..10

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

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

1.4 在线资源……………………………….13

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

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

实验1 Linux 系统的安装和常用命令…..15

一、实验目的…………………………………….. 15

二、实验平台…………………………………….. 15

三、实验内容和要求…………………………… 15

四、实验报告…………………………………….. 16

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

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

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

2.1.2 编程范式…………………………………. 19

2.1.3 Scala 简介………………………………..20

2.1.4 Scala 的安装……………………………. 21

2.1.5 HelloWorld ……………………………… 21

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

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

2.2.2 输入/输出……………………………….. 26

2.2.3 控制结构…………………………………. 28

2.2.4 数据结构…………………………………. 31

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

2.3.1 类……………………………………………. 37

2.3.2 对象………………………………………… 42

2.3.3 继承………………………………………… 47

2.3.4 参数化类型……………………………… 50

2.3.5 特质………………………………………… 52

2.3.6 模式匹配…………………………………. 55

2.3.7 包……………………………………………. 58

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

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

2.4.2 高阶函数…………………………………. 61

2.4.3 闭包………………………………………… 62

2.4.4 偏应用函数和Curry 化…………… 62

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

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

2.5 本章小结……………………………….70

2.6 习题……………………………………..70

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

一、实验目的…………………………………….. 71

二、实验平台…………………………………….. 71

三、实验内容和要求………………………….. 72

四、实验报告…………………………………….. 75

第3 章 Spark 的设计与运行

原理……………………76

3.1 概述……………………………………..77

3.2 Spark 生态系统………………………78

3.3 Spark 运行架构………………………79

3.3.1 基本概念…………………………………. 79

3.3.2 架构设计…………………………………. 80

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

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

3.4 Spark 的部署方式………………….. 91

3.5 本章小结……………………………….92

3.6 习题……………………………………..93

第4 章 Spark 环境搭建和使用

方法……………………94

4.1 安装Spark…………………………….95

4.1.1 基础环境…………………………………. 95

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

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

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

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

4.2.1 spark-shell 命令…………………….. 98

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

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

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

4.3.2 编写Spark 应用程序代码……….101

4.3.3 编译打包………………………………..101

4.3.4 通过spark-submit 运行程序…104

4.4 Spark 集群环境搭建……………….104

4.4.1 集群概况………………………………..105

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

4.4.3 在集群中安装Spark ………………106

4.4.4 配置环境变量…………………………106

4.4.5 Spark 的配置…………………………106

4.4.6 启动Spark 集群…………………….107

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

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

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

4.5.2 采用独立集群管理器………………108

4.5.3 采用Hadoop YARN 管理器……109

4.6 本章小结……………………………..110

4.7 习题……………………………………111

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

一、实验目的…………………………………… 111

二、实验平台…………………………………… 111

三、实验内容和要求…………………………. 111

四、实验报告…………………………………… 112

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

5.1 RDD 编程基础………………………114

5.1.1 RDD 创建……………………………… 114

5.1.2 RDD 操作……………………………… 115

5.1.3 持久化…………………………………… 121

5.1.4 分区………………………………………. 122

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

5.2 键值对RDD …………………………128

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

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

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

5.3 数据读写……………………………..134

5.3.1 文件数据读写………………………… 135

5.3.2 读写HBase 数据…………………… 137

5.4 综合实例……………………………..141

5.4.1 求TOP 值…………………………….. 141

5.4.2 文件排序……………………………….. 143

5.4.3 二次排序……………………………….. 144

5.5 本章小结……………………………..146

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

一、实验目的…………………………………… 146

二、实验平台…………………………………… 146

三、实验内容和要求………………………… 146

四、实验报告…………………………………… 148

第6 章 Spark SQL ……….. 149

6.1 Spark SQL 简介……………………150

6.1.1 从Shark 说起……………………….. 150

6.1.2 Spark SQL 架构……………………. 151

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

6.2 DataFrame 概述…………………..152

6.3 DataFrame 的创建………………..153

6.4 DataFrame 的保存………………..154

6.5 DataFrame 的常用操作…………..155

6.6 从RDD 转换得到DataFrame…..156

6.6.1 利用反射机制推断RDD 模式…. 157

6.6.2 使用编程方式定义RDD 模式…. 158

6.7 使用Spark SQL 读写数据库…….160

6.7.1 通过JDBC 连接数据库…………..160

6.7.2 连接Hive 读写数据……………….. 162

6.8 本章小结……………………………..166

6.9 习题……………………………………166

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

一、实验目的…………………………………… 167

二、实验平台…………………………………… 167

三、实验内容和要求…………………………. 167

四、实验报告…………………………………… 168

第7 章 Spark Streaming… 169

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

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

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

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

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

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

7.2 Spark Streaming ………………….174

7.2.1 Spark Streaming 设计…………… 174

7.2.2 Spark Streaming 与Storm 的

对比………………………………………. 175

7.2.3 从“Hadoop+Storm”架构转向

Spark 架构……………………………. 176

7.3 DStream 操作概述…………………177

7.3.1 Spark Streaming 工作机制……. 177

7.3.2 编写Spark Streaming 程序的基本

步骤………………………………………. 178

7.3.3 创建StreamingContext 对象… 178

7.4 基本输入源…………………………..179

7.4.1 文件流…………………………………… 179

7.4.2 套接字流……………………………….. 181

7.4.3 RDD 队列流…………………………… 186

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

7.5.1 Kafka 简介……………………………. 188

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

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

7.5.4 编写Spark Streaming 程序使用

Kafka 数据源………………………… 190

7.6 转换操作……………………………..194

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

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

7.7 输出操作……………………………..199

7.7.1 把DStream 输出到文本

文件中…………………………………… 199

7.7.2 把DStream 写入到关系

数据库中………………………………..200

7.8 本章小结……………………………..202

7.9 习题……………………………………202

实验6 Spark Streaming 编程初级

实践……………………………….203

一、实验目的…………………………………… 203

二、实验平台…………………………………… 203

三、实验内容和要求………………………… 203

四、实验报告…………………………………… 204

第8 章 Spark Mllib ……….205

8.1 基于大数据的机器学习…………….206

8.2 机器学习库MLlib 概述…………….207

8.3 基本数据类型………………………..208

8.3.1 本地向量……………………………….. 208

8.3.2 标注点…………………………………… 208

8.3.3 本地矩阵……………………………….. 209

8.4 机器学习流水线……………………..210

8.4.1 流水线的概念………………………… 210

8.4.2 流水线工作过程…………………….. 211

8.5 特征提取、转换和选择…………….212

8.5.1 特征提取……………………………….. 213

8.5.2 特征转换……………………………….. 215

8.5.3 特征选择……………………………….. 220

8.5.4 局部敏感哈希………………………… 221

8.6 分类算法……………………………..222

8.6.1 逻辑斯蒂回归分类器……………… 222

8.6.2 决策树分类器………………………… 226

8.7 聚类算法……………………………..229

8.7.1 K-Means 聚类算法………………..230

8.7.2 GMM 聚类算法……………………… 232

8.8 协同过滤算法………………………..234

8.8.1 推荐算法的原理…………………….. 235

8.8.2 ALS 算法………………………………. 235

8.9 模型选择和超参数调整…………….239

8.9.1 模型选择工具………………………… 239

8.9.2 用交叉验证选择模型………………240

8.10 本章小结……………………………242

8.11 习题………………………………….242

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

实践……………………………….243

一、实验目的…………………………………… 243

二、实验平台…………………………………… 243

三、实验内容和要求………………………… 243

四、实验报告…………………………………… 244

参考文献……………………245