通过典型数据分析应用场景、算法与系统架构,结合6大案例,全面、深入讲解Spark大数据分析的各种技术和方法
作为一个通用大数据计算框架,Spark广泛应用于多种典型大数据分析场景。
通过这本书,你将了解到:
Spark的机制与生态系统
Spark算法分析与应用
典型的数据分析场景
Spark在日志分析、情感分析、协同过滤、个性化推荐、社交网络分析、搜索、文本分析等场景的应用
Spark与其他开源工具及系统的集成
Spark已经在全球范围内被广泛使用,无论是微软、Intel、阿里巴巴、百度、腾讯等国际互联网巨头,还是一些初创公司,都在使用Spark。本书作者结合实战经验,编写了这本书。本书抽象出典型数据分析应用场景,适当简化,只进行主干介绍,讲解Spark应用开发、数据分析算法,并结合其他开源系统与组件,勾勒出数据分析流水线全貌。
这是一本根据应用场景讲解如何通过Spark进行大数据分析与应用构建的著作,以实战为导向。作者结合典型应用场景,抽象出通用与简化后的模型,以便于读者能举一反三,直接应用。
本书首先从技术层面讲解了Spark的机制、生态系统与开发相关的内容;然后从应用角度讲解了日志分析、推荐系统、情感分析、协同过滤、搜索引擎、社交网络分析、新闻数据分析等多个常见的大数据场景下的数据分析。在每个场景中,首先是对场景进行抽象与概括,然后将Spark融入其中构建数据分析算法与应用,最后结合其他开源系统或工具构建更为丰富的数据分析流水线。
前 言
第1章 Spark简介 1
1.1 初识Spark 1
1.2 Spark生态系统BDAS 3
1.3 Spark架构与运行逻辑 4
1.4 弹性分布式数据集 6
1.4.1 RDD简介 6
1.4.2 RDD算子分类 8
1.5 本章小结 17
第2章 Spark开发与环境配置 18
2.1 Spark应用开发环境配置 18
2.1.1 使用Intellij开发Spark
程序 18
2.1.2 使用SparkShell进行交互式数据分析 23
2.2 远程调试Spark程序 24
2.3 Spark编译 26
2.4 配置Spark源码阅读环境 29
2.5 本章小结 29
第3章 BDAS简介 30
3.1 SQL on Spark 30
3.1.1 为什么使用Spark SQL 31
3.1.2 Spark SQL架构分析 32
3.2 Spark Streaming 35
3.2.1 Spark Streaming简介 35
3.2.2 Spark Streaming架构 38
3.2.3 Spark Streaming原理剖析 38
3.3 GraphX 45
3.3.1 GraphX简介 45
3.3.2 GraphX的使用简介 45
3.3.3 GraphX体系结构 48
3.4 MLlib 50
3.4.1 MLlib简介 50
3.4.2 MLlib中的聚类和分类 52
3.5 本章小结 57
第4章 Lamda架构日志分析流水线 58
4.1 日志分析概述 58
4.2 日志分析指标 61
4.3 Lamda架构 62
4.4 构建日志分析数据流水线 64
4.4.1 用Flume进行日志采集 64
4.4.2 用Kafka将日志汇总 68
4.4.3 用Spark Streaming进行实时日志分析 70
4.4.4 Spark SQL离线日志分析 75
4.4.5 用Flask将日志KPI可视化 78
4.5 本章小结 81
第5章 基于云平台和用户日志的推荐系统 82
5.1 Azure云平台简介 82
5.1.1 Azure网站模型 83
5.1.2 Azure数据存储 84
5.1.3 Azure Queue消息传递 84
5.2 系统架构 85
5.3 构建Node.js应用 86
5.3.1 创建Azure Web应用 87
5.3.2 构建本地Node.js网站 90
5.3.3 发布应用到云平台 90
5.4 数据收集与预处理 91
5.4.1 通过JS收集用户行为日志 92
5.4.2 用户实时行为回传到Azure Queue 94
5.5 Spark Streaming实时分析用户日志 96
5.5.1 构建Azure Queue的Spark Streaming Receiver 96
5.5.2 Spark Streaming实时处理Azure Queue日志 97
5.5.3 Spark Streaming数据存储于Azure Table 98
5.6 MLlib离线训练模型 99
5.6.1 加载训练数据 99
5.6.2 使用rating RDD训练ALS模型 100
5.6.3 使用ALS模型进行电影推荐 101
5.6.4 评估模型的均方差 101
5.7 本章小结 102
第6章 Twitter情感分析 103
6.1 系统架构 103
6.2 Twitter数据收集 104
6.2.1 设置 104
6.2.2 Spark Streaming接收并输出Tweet 109
6.3 数据预处理与Cassandra存储 111
6.3.1 添加SBT依赖 111
6.3.2 创建Cassandra Schema 112
6.3.3 数据存储于Cassandra 112
6.4 Spark Streaming热点Twitter分析 113
6.5 Spark Streaming在线情感分析 115
6.6 Spark SQL进行Twitter分析 118
6.6.1 读取Cassandra数据 118
6.6.2 查看JSON数据模式 118
6.6.3 Spark SQL分析Twitter 119
6.7 Twitter可视化 123
6.8 本章小结 125
第7章 热点新闻分析系统 126
7.1 新闻数据分析 126
7.2 系统架构 126
7.3 爬虫抓取网络信息 127
7.3.1 Scrapy简介 127
7.3.2 创建基于Scrapy的新闻爬虫 128
7.3.3 爬虫分布式化 133
7.4 新闻文本数据预处理 134
7.5 新闻聚类 135
7.5.1 数据转换为向量(向量空间模型VSM) 135
7.5.2 新闻聚类 136
7.5.3 词向量同义词查询 138
7.5.4 实时热点新闻分析 138
7.6 Spark Elastic Search构建全文检索引擎 139
7.6.1 部署Elastic Search 139
7.6.2 用Elastic Search索引MongoDB数据 141
7.6.3 通过Elastic Search检索数据 143
7.7 本章小结 145
第8章 构建分布式的协同过滤推荐系统 146
8.1 推荐系统简介 146
8.2 协同过滤介绍 147
8.2.1 基于用户的协同过滤算法User-based CF 148
8.2.2 基于项目的协同过滤算法Item-based CF 149
8.2.3 基于模型的协同过滤推荐Model-based CF 150
8.3 基于Spark的矩阵运算实现协同过滤算法 152
8.3.1 Spark中的矩阵类型 152
8.3.2 Spark中的矩阵运算 153
8.3.3 实现User-based协同过滤的示例 153
8.3.4 实现Item-based协同过滤的示例 154
8.3.5 基于奇异值分解实现Model-based协同过滤的示例 155
8.4 基于Spark的MLlib实现协同过滤算法 155
8.4.1 MLlib的推荐算法工具 155
8.4.2 MLlib协同过滤推荐示例 156
8.5 案例:使用MLlib协同过滤实现电影推荐 157
8.5.1 MovieLens数据集 157
8.5.2 确定最佳的协同过滤模型参数 158
8.5.3 利用最佳模型进行电影推荐 160
8.6 本章小结 161
第9章 基于Spark的社交网络分析 162
9.1 社交网络介绍 162
9.1.1 社交网络的类型 162
9.1.2 社交网络的相关概念 163
9.2 社交网络中社团挖掘算法 164
9.2.1 聚类分析和K均值算法简介 165
9.2.2 社团挖掘的衡量指标 165
9.2.3 基于谱聚类的社团挖掘算法 166
9.3 Spark中的K均值算法 168
9.3.1 Spark中与K均值有关的对象和方法 168
9.3.2 Spark下K均值算法示例 168
9.4 案例:基于Spark的Facebook社团挖掘 169
9.4.1 SNAP社交网络数据集介绍 169
9.4.2 基于Spark的社团挖掘实现 170
9.5 社交网络中的链路预测算法 172
9.5.1 分类学习简介 172
9.5.2 分类器的评价指标 173
9.5.3 基于Logistic回归的链路预测算法 174
9.6 Spark MLlib中的Logistic回归 174
9.6.1 分类器相关对象 174
9.6.2 模型验证对象 175
9.6.3 基于Spark的Logistic回归示例 175
9.7 案例:基于Spark的链路预测算法 177
9.7.1 SNAP符号社交网络Epinions数据集 177
9.7.2 基于Spark的链路预测算法 177
9.8 本章小结 179
第10章 基于Spark的大规模新闻主题分析 180
10.1 主题模型简介 180
10.2 主题模型LDA 181
10.2.1 LDA模型介绍 181
10.2.2 LDA的训练算法 183
10.3 Spark中的LDA模型 185
10.3.1 MLlib对LDA的支持 185
10.3.2 Spark中LDA模型训练示例 186
10.4 案例:Newsgroups新闻的主题分析 189
10.4.1 Newsgroups数据集介绍 190
10.4.2 交叉验证估计新闻的主题个数 190
10.4.3 基于主题模型的文本聚类算法 193
10.4.4 基于主题模型的文本分类算法 195
10.5 本章小结 196
第11章 构建分布式的搜索引擎 197
11.1 搜索引擎简介 197
11.2 搜索排序概述 198
11.3 查询无关模型PageRank 199
11.4 基于Spark的分布式PageRank实现 200
11.4.1 PageRank的MapReduce实现 200
11.4.2 Spark的分布式图模型GraphX 203
11.4.3 基于GraphX的PageRank实现 203
11.5 案例:GoogleWeb Graph的PageRank计算 204
11.6 查询相关模型Ranking SVM 206
11.7 Spark中支持向量机的实现 208
11.7.1 Spark中的支持向量机模型 208
11.7.2 使用Spark测试数据演示支持向量机的训练 209
11.8 案例:基于MSLR数据集的查询排序 211
11.8.1 Microsoft Learning to Rank数据集介绍 211
11.8.2 基于Spark的Ranking SVM实现 212
11.9 本章小结 213