第1章 Spark简介与运行原理 1
1.1 Spark是什么 1
1.1.1 Spark的版本发展历程 2
1.1.2 Spark与Hadoop的区别与联系 2
1.1.3 Spark的应用场景 3
1.2 Spark的生态系统 3
1.3 Spark的架构与原理 4
1.3.1 Spark架构设计 4
1.3.2 Spark作业运行流程 5
1.3.3 Spark分布式计算流程 6
1.4 Spark 2.X新特性 6
1.4.1 精简的API 6
1.4.2 Spark作为编译器 7
1.4.3 智能化程度 7
1.5 小结 7
习题 8
第2章 Spark的环境搭建 9
2.1 环境搭建前的准备 9
2.2 Spark相关配置 13
2.2.1 安装SSH 13
2.2.2 SSH免密码登录 14
2.2.3 修改访问权限 15
2.2.4 修改profile文件 15
2.2.5 修改Spark配置文件 16
2.3 Spark集群启动与关闭 17
2.4 Spark应用提交到集群 18
2.5 Spark Web监控页面 19
2.6 小结 20
习题 20
第3章 使用Python开发Spark应用 21
3.1 Python编程语言 21
3.1.1 Python语言介绍 21
3.1.2 PySpark是什么 22
3.2 PySpark的启动与日志设置 22
3.2.1 PySpark的启动方式 22
3.2.2 日志输出内容控制 24
3.3 PySpark开发包的安装 24
3.3.1 使用pip命令安装 24
3.3.2 使用离线包安装 25
3.4 使用PyCharm编写Spark应用 25
3.4.1 PyCharm的安装与基本配置 25
3.4.2 编写Spark应用 27
3.5 小结 29
习题 30
第4章 Spark RDD 31
4.1 弹性分布式数据集 31
4.1.1 RDD的定义 31
4.1.2 RDD的特点 32
4.1.3 RDD的创建 33
4.1.4 RDD的操作 34
4.2 transform算子 34
4.2.1 map转换 34
4.2.2 flatMap转换 35
4.2.3 filter转换 35
4.2.4 union转换 35
4.2.5 intersection转换 36
4.2.6 distinct转换 36
4.2.7 sortBy转换 36
4.2.8 mapPartitions转换 36
4.2.9 mapPartitionsWithlndex转换 37
4.2.10 partitionBy转换 37
4.3 action算子 37
4.3.1 reduce(f)动作 37
4.3.2 collect()动作 38
4.3.3 count()动作 38
4.3.4 take(num)动作 39
4.3.5 first()动作 39
4.3.6 top(num)动作 39
4.3.7 saveAsTextFile()动作 39
4.3.8 foreach(f)动作 40
4.3.9 foreachPartition(f)动作 40
4.4 RDD Key-Value转换算子 41
4.4.1 mapValues(f)操作 41
4.4.2 flatMapValues(f)操作 41
4.4.3 combineByKey操作 41
4.4.4 reduceByKey操作 42
4.4.5 groupByKey操作 42
4.4.6 sortByKey操作 43
4.4.7 keys()操作 43
4.4.8 values()操作 43
4.4.9 join操作 43
4.4.10 leftOuterJoin操作 43
4.4.11 rightOuterJoin操作 44
4.5 RDD Key-Value动作运算 44
4.5.1 collectAsMap()操作 44
4.5.2 countByKey()操作 44
4.6 共享变量 45
4.6.1 累加器 45
4.6.2 广播变量 45
4.7 依赖关系 47
4.7.1 血统 47
4.7.2 宽依赖与窄依赖 47
4.7.3 shuffle 48
4.7.4 DAG的生成 49
4.8 Spark RDD的持久化 50
4.8.1 持久化使用方法 50
4.8.2 持久化存储等级 51
4.8.3 检查点 52
4.9 小结 52
习题 52
第5章 DataFrame与SparkSQL 54
5.1 DataFrame 54
5.1.1 DataFrame介绍 54
5.1.2 DataFrame创建 55
5.2 Spark SQL 56
5.2.1 Spark SQL介绍 56
5.2.2 Spark SQL的执行原理 57
5.2.3 Spark SQL的创建 58
5.3 Spark SQL、DataFrame的常用操作 61
5.3.1 字段计算 61
5.3.2 条件查询 62
5.3.3 数据排序 63
5.3.4 数据去重 63
5.3.5 数据分组统计 64
5.3.6 数据连接 65
5.3.7 数据绘图 67
5.4 小结 68
习题 69
第6章 Spark Streaming 70
6.1 Spark Streaming介绍 70
6.1.1 什么是Spark Streaming 70
6.1.2 Spark Streaming工作原理 70
6.2 流数据加载 71
6.2.1 初始化StreamingContext 71
6.2.2 Discretized Stream离散化流 71
6.2.3 Spark Streaming数据源 72
6.3 DStream输出操作 73
6.4 DStream转换操作 75
6.4.1 map转换 75
6.4.2 flatMap转换 76
6.4.3 filter转换 76
6.4.4 reduceByKey转换 77
6.4.5 count转换 77
6.4.6 updateStateByKey转换 77
6.4.7 其他转换 78
6.5 DataFrame与SQL操作 78
6.6 实时WordCount实验 79
6.7 小结 81
习题 81
第7章 Spark机器学习库 82
7.1 Spark机器学习库 82
7.1.1 机器学习简介 82
7.1.2 Spark机器学习库的构成 82
7.2 准备数据 83
7.2.1 获取数据 83
7.2.2 数据预处理 84
7.2.3 数据探索 84
7.3 使用MLlib机器学习库 85
7.3.1 搭建环境 85
7.3.2 加载数据 86
7.3.3 探索数据 89
7.3.4 预测婴儿生存机会 92
7.4 使用ML机器学习库 93
7.4.1 转换器、评估器和管道 94
7.4.2 预测婴儿生存率 95
7.5 小结 97
习题 97
第8章 GraphFrames图计算 98
8.1 图 98
8.1.1 度 99
8.1.2 路径和环 99
8.1.3 二分图 100
8.1.4 多重图和伪图 100
8.2 GraphFrames介绍 101
8.2.1 应用背景 101
8.2.2 GraphFrames库 102
8.2.3 使用GraphFrames库 102
8.3 GraphFrame编程模型 102
8.3.1 GraphFrame实例 103
8.3.2 视图和图操作 104
8.3.3 模式发现 105
8.3.4 图加载和保存 105
8.4 GraphFrames实现的算法 106
8.4.1 广度优先搜索 106
8.4.2 最短路径 106
8.4.3 三角形计数 107
8.4.4 连通分量 107
8.4.5 标签传播算法 108
8.4.6 PageRank算法 109
8.5 基于GraphFrames的网页排名 110
8.5.1 准备数据集 110
8.5.2 创建GraphFrames 111
8.5.3 使用PageRank进行网页排名 111
8.6 小结 111
习题 111
第9章 出租车数据分析 112
9.1 数据处理 112
9.2 数据分析 113
9.2.1 创建DataFrame 113
9.2.2 KMeans聚类分析 114
9.3 百度地图可视化 115
9.3.1 申请地图key 115
9.3.2 聚类结果可视化 116
9.4 小结 117
第10章 图书推荐系统 118
10.1 Django简介 118
10.1.1 Django是什么 118
10.1.2 ORM模型 119
10.1.3 Django模板 119
10.1.4 View视图 120
10.2 Django项目搭建 121
10.2.1 创建项目 121
10.2.2 创建应用 122
10.2.3 创建模型 122
10.3 推荐引擎设计 124
10.3.1 导入数据 124
10.3.2 训练模型 126
10.3.3 图书推荐 127
10.4 系统设计与实现 128
10.4.1 Bootstrap介绍与使用 128
10.4.2 Redis数据库安装与使用 129
10.4.3 视图与路由设计 130
10.5 小结 132