Spark大数据编程实用教程
目 录
前言
第1章 Spark与大数据 1
1.1 大数据开发基础 1
1.1.1 什么是大数据 1
1.1.2 大数据开发的通用步骤 2
1.1.3 大数据开发技术 4
1.2 初识Spark 10
1.2.1 Spark是什么 10
1.2.2 Spark的技术特点 11
1.3 Spark技术栈 12
1.4 Spark重要组件 13
1.4.1 Spark Core 13
1.4.2 Spark SQL 14
1.4.3 GraphX 15
1.4.4 流数据处理 16
1.4.5 SparkR 17
1.4.6 MLlib/ML 18
1.4.7 Spark交互工具 18
1.5 Spark和Scala 19
1.5.1 Scala语言简介 19
1.5.2 为什么用Scala开发Spark框架 20
1.5.3 为什么用Scala开发Spark程序 20
1.5.4 Scala开发Spark程序所涉及的技术 20
1.5.5 Scala语言基础 21
1.6 如何快速掌握Spark 21
1.6.1 Spark学习的痛点 21
1.6.2 Spark快速学习路线图 22
1.6.3 Spark学习中的关键点 23
1.6.4 利用本书相关资源高效学习Spark 23
1.6.5 本书所使用的软件和版本 25
1.7 练习 25
第2章 构建Spark运行环境 26
2.1 Spark程序运行时架构 26
2.2 构建Spark大数据运行环境 28
2.2.1 构建HDFS 28
2.2.2 构建Yarn 30
2.2.3 构建Spark集群 31
2.3 运行Spark程序(Local方式) 31
2.4 运行Spark程序(分布式方式) 32
2.4.1 Spark on Yarn 32
2.4.2 Spark on Standalone 36
2.5 Spark程序在spark-shell上运行 41
2.6 使用Web UI监控Spark程序运行 43
2.7 扩展集群节点 48
2.8 练习 49
第3章 开发第一个Spark程序 51
3.1 在命令行模式下开发Spark程序 51
3.1.1 构建Scala程序编译环境 51
3.1.2 使用Vim编写Spark程序 53
3.1.3 使用命令编译、打包Spark程序 54
3.1.4 运行Spark程序 56
3.1.5 使用java命令运行Spark程序 57
3.1.6 Spark程序编译、运行、部署的关键点 58
3.2 使用IDEA开发Spark程序 58
3.2.1 IDEA安装和基本使用 59
3.2.2 使用IDEA编辑Spark代码 60
3.2.3 IDEA编译、打包 62
3.2.4 IDEA远程提交Spark程序 63
3.3 练习 64
第4章 深入理解Spark程序代码 66
4.1 Spark程序代码结构 66
4.2 Spark程序代码的核心概念 68
4.2.1 RDD 68
4.2.2 Application 68
4.2.3 Job 69
4.2.4 DAG 70
4.2.5 Stage 72
4.2.6 Task 76
4.2.7 Application、Job、Stage和Task的并行粒度和并行条件 77
4.3 Spark程序代码执行过程 77
4.4 练习 85
第5章 RDD编程 86
5.1 RDD核心概念 86
5.1.1 Transformation的基本概念 87
5.1.2 Action的基本概念 88
5.1.3 Partition的基本概念 88
5.2 创建RDD 89
5.3 RDD Partition 93
5.4 Transformation操作 107
5.5 Action操作 130
5.6 RDD的cache/persist和checkpoint操作 136
5.7 练习 140
第6章 Spark SQL结构化数据处理 142
6.1 Spark SQL的核心概念 142
6.2 Spark SQL数据处理概述 147
6.3 构建Spark SQL运行环境 150
6.4 DataFrame/Dataset快速上手 157
6.5 DataFrame/Dataset与数据源的转换 165
6.6 DataFrame/Dataset常用API 198
6.7 SQL操作 223
6.8 练习 234
第7章 Spark Streaming 236
7.1 Spark Streaming基础 236
7.2 编写一个Spark Streaming程序 241
7.3 Spark Streaming Web UI的使用 244
7.4 多路流数据合并处理示例 250
7.5 DStream Transformation操作 255
7.6 DStream Output 操作 262
7.7 练习 264
第8章 Structured Streaming 265
8.1 Structured Streaming基础 265
8.2 Structured Streaming接入Text File数据源 268
8.3 Structured Streaming接入Rate数据源 273
8.4 使用Schema解析JSON格式数据源 274
8.5 使用DataFrame/Dataset处理流数据 277
8.6 Structured Streaming Window操作 282
8.7 Structured Streaming Watermarking操作 288
8.8 Structured Streaming JOIN操作 290
8.9 练习 304
第9章 SparkR 305
9.1 SparkR基础 305
9.2 构建SparkR程序开发和运行环境 307
9.3 SparkR代码的执行方式 308
9.4 SparkR的基本使用 314
9.5 SparkR机器学习算子 323
9.6 利用SparkR实现单词统计和图形输出 326
9.7 练习 329
第10章 GraphX 330
10.1 GraphX基础 330
10.2 GraphX的基本数据结构 335
10.3 GraphX实现最短路径算法――SGDSP 354
10.4 GraphX Pregel的原理及使用 361
10.5 GraphX Pregel实现最短路径算法――SGPSP 366
10.6 练习 370
参考文献 372