Spark独立集群21
2.1.3 基于YARN运行Spark22
2.1.4 基于Mesos运行Spark22
2.2 准备安装Spark23
2.3 获取Spark23
2.4 在Linux或MacOSX上安装Spark25
2.5 在Windows上安装Spark26
2.6 探索Spark安装目录28
2.7 部署多节点的Spark独立集群29
2.8 在云上部署Spark30
2.8.1 AWS30
2.8.2 GCP32
2.8.3 Databricks32
2.9 本章小结34
第3章 理解Spark集群架构35
3.1 Spark应用中的术语35
3.1.1 Spark驱动器36
3.1.2 Spark工作节点与执行器38
3.1.3 Spark主进程与集群管理器40
3.2 使用独立集群的Spark应用41
3.3 在YARN上运行Spark应用42
3.3.1 ResourceManager作为集群管理器42
3.3.2 ApplicationMaster作为Spark主进程42
3.4 在YARN上运行Spark应用的部署模式42
3.4.1 客户端模式42
3.4.2 集群模式43
3.4.3 回顾本地模式45
3.5 本章小结45
第4章 Spark编程基础46
4.1 RDD简介46
4.2 加载数据到RDD48
4.2.1 从文件创建RDD48
4.2.2 从文本文件创建RDD49
4.2.3 从对象文件创建RDD52
4.2.4 从数据源创建RDD52
4.2.5 从JSON文件创建RDD54
4.2.6 通过编程创建RDD56
4.3 RDD操作57
4.3.1 RDD核心概念57
4.3.2 基本的RDD转化操作61
4.3.3 基本的RDD行动操作65
4.3.4 键值对RDD的转化操作69
4.3.5 MapReduce与单词计数练习75
4.3.6 连接操作78
4.3.7 在Spark中连接数据集82
4.3.8 集合操作85
4.3.9 数值型RDD的操作87
4.4 本章小结89
第二部分 基础拓展
第5章 Spark核心API高级编程92
5.1 Spark中的共享变量92
5.1.1 广播变量92
5.1.2 累加器96
5.1.3 练习:使用广播变量和累加器99
5.2 Spark中的数据分区100
5.2.1 分区概述100
5.2.2 掌控分区101
5.2.3 重分区函数102
5.2.4 针对分区的API方法104
5.3 RDD的存储选项106
5.3.1 回顾RDD谱系106
5.3.2 RDD存储选项107
5.3.3 RDD缓存109
5.3.4 持久化RDD109
5.3.5 选择何时持久化或缓存RDD112
5.3.6 保存RDD检查点112
5.3.7 练习:保存RDD检查点114
5.4 使用外部程序处理RDD115
5.5 使用Spark进行数据采样117
5.6 理解Spark应用与集群配置118
5.6.1 Spark环境变量118
5.6.2 Spark配置属性121
5.7 Spark优化124
5.7.1 早过滤,勤过滤124
5.7.2 优化满足结合律的操作124
5.7.3 理解函数和闭包的影响126
5.7.4 收集数据的注意事项127
5.7.5 使用配置参数调节和优化应用127
5.7.6 避免低效的分区128
5.7.7 应用性能问题诊断130
5.8 本章小结133
第6章 使用Spark进行SQL与NoSQL编程134
6.1 SparkSQL简介134
6.1.1 Hive简介134
6.1.2 SparkSQL架构138
6.1.3 DataFrame入门141
6.1.4 使用DataFrame150
6.1.5 DataFrame缓存、持久化与重新分区157
6.1.6 保存DataFrame输出158
6.1.7 访问SparkSQL161
6.1.8 练习:使用SparkSQL163
6.2 在Spark中使用NoSQL系统165
6.2.1 NoSQL简介165
6.2.2 在Spark中使用HBase166
6.2.3 练习:在Spark中使用HBase169
6.2.4 在Spark中使用Cassandra170
6.2.5 在Spark中使用DynamoDB172
6.2.6 其他NoSQL平台174
6.3 本章小结174
第7章 使用Spark处理流数据与消息175
7.1 SparkStreaming简介175
7.1.1 SparkStreaming架构176
7.1.2 DStream简介177
7.1.3 练习:SparkStreaming入门183
7.1.4 状态操作184
7.1.5 滑动窗口操作185
7.2 结构化流处理188
7.2.1 结构化流处理数据源188
7.2.2 结构化流处理的数据输出池189
7.2.3 输出模式190
7.2.4 结构化流处理操作190
7.3 在Spark中使用消息系统192
7.3.1 ApacheKafka192
7.3.2 KafkaUtils195
7.3.3 练习:在Spark中使用Kafka196
7.3.4 亚马逊Kinesis199
7.4 本章小结203
第8章 Spark数据科学与机器学习简介204
8.1 Spark与R语言204
8.1.1 R语言简介204
8.1.2 通过R语言使用Spark210
8.1.3 练习:在RStudio中使用SparkR215
8.