本书以Scala作为开发Spark应用程序的编程语言,系统介绍了Spark编程的基础知识。全书共7章,内容包括大数据技术概述、Spark的设计与运行原理、Spark环境搭建和使用方法、RDD编程、Spark SQL、Spark Streaming、Spark MLlib等。
本书是厦门大学作者团队长期经验总结的结晶,是在厦门大学《大数据技术原理与应用》入门级大数据教材的基础之上编写的。为了确保教程质量,在编著出版纸质教材之前,实验室已经于2016年10月通过实验室官网免费发布共享了简化版的Spark在线教程和相关教学资源,同时,该在线教程也已经用于厦门大学计算机科学系研究生的大数据课程教学,并成为全国高校大数据课程教师培训交流班的授课内容。实验室根据读者对在线Spark教程的大量反馈意见以及教学实践中发现的问题,对Spark在线教程进行了多次修正和完善,所有这些前期准备工作,都为纸质教材的编著出版打下了坚实的基础。
披荆斩棘,在大数据丛林中开辟学习捷径
填沟削坎,为快速学习Spark 技术铺平道路
深入浅出,有效降低Spark 技术学习门槛
资源全面,构建全方位一站式在线服务体系
"林子雨
厦门大学计算机科学系教师。2013年度和2017年度厦门大学教学类奖教金获得者。中国计算机学会数据库专业委员会委员,中国计算机学会信息系统专业委员会委员,厦门大学数据库实验室负责人,数据中国百校工程教育部专家组成员。国内高校数字教师的提出者和建设者,编著出版了国内高校系统介绍大数据知识的专业教材《大数据技术原理与应用》,成为国内众多高校开课教材,同时建设了国内高校大数据课程公共服务平台,为教师教学和学生学习大数据课程免费提供全方位、一站式服务,平台每年访问量超过100万次,成为国内高校大数据教学知名系列。
"
第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章 Spark的设计与运行原理 17
2.1 概述 18
2.2 Spark生态系统 19
2.3 Spark运行架构 20
2.3.1 基本概念 20
2.3.2 架构设计 21
2.3.3 Spark运行基本流程 22
2.3.4 RDD的设计与运行原理 23
2.4 Spark的部署方式 32
2.5 本章小结 33
2.6 习题 34
第3章 Spark环境搭建和使用方法 35
3.1 安装Spark 36
3.1.1 基础环境 36
3.1.2 下载安装文件 36
3.1.3 配置相关文件 37
3.1.4 Spark和Hadoop的交互 38
3.2 在spark-shell中运行代码 38
3.2.1 spark-shell命令 39
3.2.2 启动spark-shell 40
3.3 开发Spark独立应用程序 40
3.3.1 安装编译打包工具 41
3.3.2 编写Spark应用程序代码 42
3.3.3 编译打包 42
3.3.4 通过spark-submit运行程序 45
3.4 Spark集群环境搭建 45
3.4.1 集群概况 46
3.4.2 搭建Hadoop集群 46
3.4.3 在集群中安装Spark 47
3.4.4 配置环境变量 47
3.4.5 Spark的配置 47
3.4.6 启动Spark集群 48
3.4.7 关闭Spark集群 48
3.5 在集群上运行Spark应用程序 49
3.5.1 启动Spark集群 49
3.5.2 采用独立集群管理器 49
3.5.3 采用Hadoop YARN管理器 50
3.6 本章小结 51
3.7 习题 52
实验2 Spark和Hadoop的安装 52
一、实验目的 52
二、实验平台 52
三、实验内容和要求 52
四、实验报告 53
第4章 RDD编程 54
4.1 RDD编程基础 55
4.1.1 RDD创建 55
4.1.2 RDD操作 56
4.1.3 持久化 62
4.1.4 分区 63
4.1.5 一个综合实例 67
4.2 键值对RDD 69
4.2.1 键值对RDD的创建 69
4.2.2 常用的键值对转换操作 70
4.2.3 一个综合实例 74
4.3 数据读写 75
4.3.1 文件数据读写 76
4.3.2 读写HBase数据 78
4.4 综合实例 82
4.4.1 求TOP值 82
4.4.2 文件排序 84
4.4.3 二次排序 85
4.5 本章小结 87
实验3 RDD编程初级实践 87
一、实验目的 87
二、实验平台 87
三、实验内容和要求 87
四、实验报告 89
第5章 Spark SQL 90
5.1 Spark SQL简介 91
5.1.1 从Shark说起 91
5.1.2 Spark SQL架构 92
5.1.3 为什么推出Spark SQL 93
5.2 DataFrame概述 93
5.3 DataFrame的创建 94
5.4 DataFrame的保存 95
5.5 DataFrame的常用操作 96
5.6 从RDD转换得到DataFrame 97
5.6.1 利用反射机制推断RDD模式 98
5.6.2 使用编程方式定义RDD模式 99
5.7 使用Spark SQL读写数据库 101
5.7.1 通过JDBC连接数据库 101
5.7.2 连接Hive读写数据 103
5.8 本章小结 107
5.9 习题 107
实验4 Spark SQL编程初级实践 108
一、实验目的 108
二、实验平台 108
三、实验内容和要求 108
四、实验报告 109
第6章 Spark Streaming 110
6.1 流计算概述 111
6.1.1 静态数据和流数据 111
6.1.2 批量计算和实时计算 112
6.1.3 流计算概念 112
6.1.4 流计算框架 113
6.1.5 流计算处理流程 114
6.2 Spark Streaming 115
6.2.1 Spark Streaming设计 115
6.2.2 Spark Streaming与Storm的对比 116
6.2.3 从Hadoop Storm架构转向Spark架构 117
6.3 DStream操作概述 118
6.3.1 Spark Streaming工作机制 118
6.3.2 编写Spark Streaming程序的基本步骤 119
6.3.3 创建StreamingContext对象 119
6.4 基本输入源 120
6.4.1 文件流 120
6.4.2 套接字流 122
6.4.3 RDD队列流 127
6.5 高级数据源 128
6.5.1 Kafka简介 129
6.5.2 Kafka准备工作 129
6.5.3 Spark准备工作 130
6.5.4 编写Spark Streaming程序使用Kafka数据源 131
6.6 转换操作 135
6.6.1 DStream无状态转换操作 135
6.6.2 DStream有状态转换操作 136
6.7 输出操作 140
6.7.1 把DStream输出到文本文件中 140
6.7.2 把DStream写入到关系数据库中 141
6.8 本章小结 143
6.9 习题 143
实验5 Spark Streaming编程初级实践 144
一、实验目的 144
二、实验平台 144
三、实验内容和要求 144
四、实验报告 145
第7章 Spark Mllib 146
7.1 基于大数据的机器学习 147
7.2 机器学习库MLlib概述 148
7.3 基本数据类型 149
7.3.1 本地向量 149
7.3.2 标注点 149
7.3.3 本地矩阵 150
7.4 机器学习流水线 151
7.4.1 流水线的概念 151
7.4.2 流水线工作过程 152
7.5 特征提取、转换和选择 153
7.5.1 特征提取 154
7.5.2 特征转换 156
7.5.3 特征选择 161
7.5.4 局部敏感哈希 162
7.6 分类算法 163
7.6.1 逻辑斯蒂回归分类器 163
7.6.2 决策树分类器 167
7.7 聚类算法 170
7.7.1 K-Means聚类算法 171
7.7.2 GMM聚类算法 173
7.8 协同过滤算法 175
7.8.1 推荐算法的原理 176
7.8.2 ALS算法 176
7.9 模型选择和超参数调整 180
7.9.1 模型选择工具 180
7.9.2 用交叉验证选择模型 181
7.10 本章小结 183
7.11 习题 183
实验6 Spark机器学习库MLlib编程实践 184
一、实验目的 184
二、实验平台 184
三、实验内容和要求 184
四、实验报告 185
参考文献 186