第1章Spark概述 1
任务1.1认识Spark 1
1.1.1 Spark的发展 1
1.1.2 Spark的特点 2
1.1.3 Spark生态圈 4
1.1.4 Spark的应用场景 5
任务1.2搭建Spark环境 5
1.2.1搭建单机版环境 6
1.2.2搭建单机伪分布式环境 6
1.2.3搭建完全分布式环境 7
任务1.3了解Spark运行架构与原理 10
1.3.1 Spark集群架构 11
1.3.2 Spark作业运行流程 11
1.3.3 Spark核心数据集RDD 15
1.3.4 Spark核心原理 17
小结 19
第2章Scala基础 20
任务2.1 Scala的简介与安装 21
2.1.1 Scala简介 21
2.1.2 Scala特性 21
2.1.3 Scala的环境设置及安装 21
2.1.4运行Scala 23
任务2.2定义函数识别号码类型 24
2.2.1数据类型 24
2.2.2常量和变量 25
2.2.3表达式 26
2.2.4数组 27
2.2.5函数 29
2.2.6任务实现 31
任务2.3统计广州号码段数量 32
2.3.1 if判断 32
2.3.2循环 33
2.3.3任务实现 34
任务2.4根据归属地对手机号码段分组 34
2.4.1 List 35
2.4.2 Set 36
2.4.3 Map 37
2.4.4元组 38
2.4.5函数组合器 38
2.4.6任务实现 39
任务2.5编写手机号码归属地信息查询程序 40
2.5.1 Scala类 40
2.5.2 Scala object 42
2.5.3 Scala模式匹配 42
2.5.4 Scala读取文件 44
2.5.5任务实现 44
小结 45
实训 45
实训1编写函数过滤文本中的回文单词 45
实训2使用Scala编程输出杨辉三角 46
课后习题 46
第3章Spark编程 48
任务3.1以学生成绩数据创建RDD 49
3.1.1从内存中已有数据创建RDD 50
3.1.2从外部存储创建RDD 51
3.1.3任务实现 52
任务3.2查询学生成绩表中的前5名 52
3.2.1使用map转换数据 52
3.2.2使用sortBy()排序 53
3.2.3使用collect()查询 53
3.2.4使用flatMap转换数据 54
3.2.5使用take()方式查询某几个值 54
3.2.6任务实现 55
任务3.3输出单科成绩为100分的学生ID 55
3.3.1使用union()合并多个RDD 56
3.3.2使用filter()进行过滤 56
3.3.3使用distinct()进行去重 56
3.3.4简单的集合操作 57
3.3.5任务实现 58
任务3.4输出每位学生所有科目的总成绩 58
3.4.1键值对RDD简介 59
3.4.2创建键值对RDD 59
3.4.3转换操作keys与values 59
3.4.4转换操作reduceByKey() 60
3.4.5转换操作groupByKey() 60
3.4.6任务实现 60
任务3.5输出每位学生的平均成绩 61
3.5.1使用join()连接两个RDD 61
3.5.2使用zip组合两个RDD 63
3.5.3使用combineByKey合并相同键的值 63
3.5.4使用lookup查找指定键的值 64
3.5.5任务实现 64
任务3.6将汇总后的学生成绩存储为文本文件 65
3.6.1 JSON文件的读取与存储 65
3.6.2 CSV文件的读取与存储 67
3.6.3 SquenceFile的读取与存储 69
3.6.4文本文件的读取与存储 70
3.6.5任务实现 71
小结 72
实训 72
实训1统计文本中性别为“男”的用户数 73
实训2单词计数 73
课后习题 74
第4章Spark编程进阶 76
任务4.1搭建开发环境 77
4.1.1下载与安装IntelliJ IDEA 77
4.1.2 Scala插件安装与使用 79
4.1.3配置Spark运行环境 84
4.1.4运行Spark程序 85
任务4.2使用移动平均预测股票涨跌 92
4.2.1持久化(缓存) 93
4.2.2数据分区 94
4.2.3计算价格波动幅度 98
4.2.4任务实现 100
小结 103
实训 103
实训 竞赛网站访问日志分析 104
课后习题 104
第5章Spark SQL:结构化数据文件处理 107
任务5.1认识Spark SQL 108
5.1.1 Spark SQL简介 108
5.1.2 Spark SQL CLI配置 109
5.1.3 Spark SQL与Shell交互 110
任务5.2掌握DataFrame基础操作 111
5.2.1创建DataFrame对象 111
5.2.2 DataFrame查看数据 114
5.2.3 DataFrame查询操作 117
5.2.4 DataFrame输出操作 123
任务5.3探索分析法律服务网站数据 125
5.3.1获取数据 125
5.3.2网页类型分析 126
5.3.3点击次数分析 131
5.3.4网页排名分析 133
小结 135
实训 135
实训1统计分析航空公司客户数据的空值以及异常值 135
实训2统计分析某公司每年的产品销售量及销售额 137
课后习题 139
第6章Spark Streaming:实时计算框架 141
任务6.1初探Spark Streaming 142
6.1.1 Spark Streaming概述 142
6.1.2 Spark Streaming运行原理 142
6.1.3初步使用Spark Streaming 143
任务6.2掌握DStream编程模型 145
6.2.1 DStream简介 146
6.2.2 DStream转换操作 146
6.2.3 DStream窗口操作 148
6.2.4 DStream输出操作 151
任务6.3 Spark Streaming实时更新热门博文 155
6.3.1 Spark Streaming输入数据源 155
6.3.2 Spark Streaming计算网页热度 158
6.3.3网页热度输出 158
6.3.4任务实现 159
小结 161
实训 161
实训1过滤打印包含单词error的记录 162
实训2实时过滤歌曲播放次数超过100次的记录并存储在HDFS上 162
课后习题 162
第7章Spark GraphX:图计算框架 165
任务7.1认识Spark GraphX 166
7.1.1图的基本概念 166
7.1.2图计算的应用 167
7.1.3 GraphX的基础概念 168
7.1.4 GraphX的发展 168
任务7.2了解GraphX常用API 169
7.2.1图的创建与存储 169
7.2.2数据查询与数据转换 174
7.2.3结构转换与关联聚合 180
任务7.3构建信任网络并找出目标用户 187
7.3.1构建网站信任网络 188
7.3.2找出需要支付稿酬的用户 188
7.3.3找出进入热门榜的用户 189
小结 191
实训 191
实训1使用PageRank算法完成网页排名 191
实训2利用二度关系完成商品推荐 192
课后习题 194
第8章Spark MLlib:功能强大的算法库 196
任务8.1了解MLlib算法库 197
8.1.1机器学习简介 197
8.1.2 MLlib介绍 198
任务8.2以Logistic回归实现用户分类 212
8.2.1分析思路 212
8.2.2数据处理 213
8.2.3 MLlib实现Logistic回归 215
8.2.4任务实现 217
小结 221
实训 221
实训1通过KMeans定位商圈 221
实训2朴素贝叶斯进行文本分类 222
课后习题 223
第9章 项目案例:餐饮平台菜品智能推荐 226
任务9.1推荐方案设计 227
9.1.1用户数据分析 227
9.1.2常用推荐算法 229
9.1.3推荐流程设计 231
任务9.2数据预处理 232
9.2.1原始数据探索分析 233
9.2.2异常数据处理 237
9.2.3数据变换处理 237
9.2.4数据集分割 239
任务9.3建立推荐模型 240
9.3.1以基于用户的协同过滤算法建模 240
9.3.2以基于物品的协同过滤算法建模 243
9.3.3以基于Spark ALS的协同过滤算法建立模型 246
9.3.4推荐模型的评测 251
任务9.4使用模型进行菜品推荐 262
9.4.1对某用户推荐10道新菜品 262
9.4.2对所有用户进行新菜品推荐 267
小结 272