第1章 Spark数据分析导论 1
1.1 Spark是什么 1
1.2.个大一统的软件栈 2
1.2.1 Spark Core 2
1.2.2 Spark SQL 3
1.2.3 Spark Streaming 3
1.2.4 MLlib 3
1.2.5 GraphX 3
1.2.6集群管理器 4
1.3 Spark的用户和用途 4
1.3.1数据科学任务 4
1.3.2数据处理应用 5
1.4 Spark简史 5
1.5 Spark的版本和发布 6
1.6 Spark的存储层次 6
第2章 Spark下载与入门 7
2.1下载Spark 7
2.2 Spark中Python和Scala的shell 9
2.3 Spark核心概念简介 12
2.4独立应用 14
2.4.1初始化SparkContext 15
2.4.2构建独立应用 16
2.5总结 19
第3章 RDD编程 21
3.1 RDD基础 21
3.2创建RDD 23
3.3 RDD操作 24
3.3.1转化操作 24
3.3.2行动操作 26
3.3.3惰性求值 27
3.4向Spark传递函数 27
3.4.1 Python 27
3.4.2 Scala 28
3.4.3 Java 29
3.5常见的转化操作和行动操作 30
3.5.1基本RDD 30
3.5.2在不同RDD类型间转换 37
3.6持久化(缓存) 39
3.7总结 40
第4章 键值对操作 41
4.1动机 41
4.2创建Pair RDD 42
4.3 Pair RDD的转化操作 42
4.3.1聚合操作 45
4.3.2数据分组 49
4.3.3连接 50
4.3.4数据排序 51
4.4 Pair RDD的行动操作 52
4.5数据分区(进阶) 52
4.5.1获取RDD的分区方式 55
4.5.2从分区中获益的操作 56
4.5.3影响分区方式的操作 57
4.5.4示例:PageRank 57
4.5.5自定义分区方式 59
4.6总结 61
第5章 数据读取与保存 63
5.1动机 63
5.2文件格式 64
5.2.1文本文件 64
5.2.2 JSON 66
5.2.3逗号分隔值与制表符分隔值 68
5.2.4 SequenceFile 71
5.2.5对象文件 73
5.2.6 Hadoop输入输出格式 73
5.2.7文件压缩 77
5.3文件系统 78
5.3.1本地/“常规”文件系统 78
5.3.2 Amazon S3 78
5.3.3 HDFS 79
5.4 Spark SQL中的结构化数据 79
5.4.1 Apache Hive 80
5.4.2 JSON 80
5.5数据库 81
5.5.1 Java数据库连接 81
5.5.2 Cassandra 82
5.5.3 HBase 84
5.5.4 Elasticsearch 85
5.6总结 86
第6章 Spark编程进阶 87
6.1简介 87
6.2累加器 88
6.2.1累加器与容错性 90
6.2.2自定义累加器 91
6.3广播变量 91
6.4基于分区进行操作 94
6.5与外部程序间的管道 96
6.6数值RDD的操作 99
6.7总结 100
第7章 在集群上运行Spark 101
7.1简介 101
7.2 Spark运行时架构 101
7.2.1驱动器节点 102
7.2.2执行器节点 103
7.2.3集群管理器 103
7.2.4启动一个程序 104
7.2.5小结 104
7.3使用spark-submit部署应用 105
7.4打包代码与依赖 107
7.4.1使用Maven构建的用Java编写的Spark应用 108
7.4.2使用sbt构建的用Scala编写的Spark应用 109
7.4.3依赖冲突 111
7.5 Spark应用内与应用间调度 111
7.6集群管理器 112
7.6.1独立集群管理器 112
7.6.2 Hadoop YARN 115
7.6.3 Apache Mesos 116
7.6.4 Amazon EC2 117
7.7选择合适的集群管理器 120
7.8总结 121
第8章 Spark调优与调试 123
8.1使用SparkConf配置Spark 123
8.2 Spark执行的组成部分:作业、任务和步骤 127
8.3查找信息 131
8.3.1 Spark网页用户界面 131
8.3.2驱动器进程和执行器进程的日志 134
8.4关键性能考量 135
8.4.1并行度 135
8.4.2序列化格式 136
8.4.3内存管理 137
8.4.4硬件供给 138
8.5总结 139
第9章 Spark SQL 141
9.1连接Spark SQL 142
9.2在应用中使用Spark SQL 144
9.2.1初始化Spark SQL 144
9.2.2基本查询示例 145
9.2.3 SchemaRDD 146
9.2.4缓存 148
9.3读取和存储数据 149
9.3.1 Apache Hive 149
9.3.2 Parquet 150
9.3.3 JSON 150
9.3.4基于RDD 152
9.4 JDBC/ODBC服务器 153
9.4.1使用Beeline 155
9.4.2长生命周期的表与查询 156
9.5用户自定义函数 156
9.5.1 Spark SQL UDF 156
9.5.2 Hive UDF 157
9.6 Spark SQL性能 158
9.7总结 159
第10章 Spark Streaming 161
10.1一个简单的例子 162
10.2架构与抽象 164
10.3转化操作 167
10.3.1无状态转化操作 167
10.3.2有状态转化操作 169
10.4输出操作 173
10.5输入源 175
10.5.1核心数据源 175
10.5.2附加数据源 176
10.5.3多数据源与集群规模 179
10.6 24/7不间断运行 180
10.6.1检查点机制 180
10.6.2驱动器程序容错 181
10.6.3工作节点容错 182
10.6.4接收器容错 182
10.6.5处理保证 183
10.7 Streaming用户界面 183
10.8性能考量 184
10.8.1批次和窗口大小 184
10.8.2并行度 184
10.8.3垃圾回收和内存使用 185
10.9总结 185
第11章 基于MLlib的机器学习 187
11.1概述 187
11.2系统要求 188
11.3机器学习基础 189
11.4数据类型 192
11.5算法 194
11.5.1特征提取 194
11.5.2统计 196
11.5.3分类与回归 197
11.5.4聚类 202
11.5.5协同过滤与推荐 203
11.5.6降维 204
11.5.7模型评估 206
11.6一些提示与性能考量 206
11.6.1准备特征 206
11.6.2配置算法 207
11.6.3缓存RDD以重复使用 207
11.6.4识别稀疏程度 207
11.6.5并行度 207
11.7流水线API 208
11.8总结 209
作者简介 210
封面介绍 210