Contents
Chapter 1 Introduction to Data Analysis with Spark/Spark数据分析简介 1
What Is Apache Spark?/什么是Apache Spark? 1
A Unified Stack/统一的Spark组件栈 2
Spark Core 4
Spark SQL 4
Spark Streaming 5
MLlib 5
GraphX 6
Cluster Managers/集群管理器 6
Who Uses Spark, and for What?/Spark的目标用户及用途 7
Data Science Tasks/数据科学任务 7
Data Processing Applications/数据处理应用 9
A Brief History of Spark/Spark发展简史 10
Spark Versions and Releases/Spark版本及更新 11
Storage Layers for Spark/Spark的存储层 11
Chapter 2 Downloading Spark and Getting Started/Spark下载和使用入门 13
Downloading Spark/Spark下载 14
Introduction to Spark’s Python and Scala Shells/Spark Python Shell和Scala Shell简介 16
Introduction to Core Spark Concepts/Spark核心概念介绍 20
Standalone Applications/Spark独立应用 24
Initializing a SparkContext/初始化SparkContext 25
Building Standalone Applications/构建Spark独立应用程序 26
Conclusion/结论 30
Chapter 3 Programming with RDDs/认识弹性分布式数据集(RDD) 31
RDD Basics/RDD的基本概念 31
Creating RDDs/新建RDD 34
RDD Operations/对RDD的操作 36
Transformations 36
Actions 38
Lazy Evaluation 40
Passing Functions to Spark/向Spark中传递函数 41
Python 41
Scala 43
Java 44
Common Transformations and Actions/常用的RDD转化操作及行动操作 46
Basic RDDs 46
Converting Between RDD Types 57
Persistence (Caching)/RDD的持久化(缓存) 59
Conclusion/结论 62
Chapter 4 Working with Key/Value Pairs/键值对操作 63
Motivation/动机 64
Creating Pair RDDs/创建pair RDD 64
Transformations on Pair RDDs/pair RDD的转化操作 66
Aggregations/聚合 69
Grouping Data/数据分组 77
Joins/连接 78
Sorting Data/数据排序 80
Actions Available on Pair RDDs/用于pair RDD的行动操作 81
Data Partitioning (Advanced)/数据分区(进阶) 82
Determining an RDD’s Partitioner/确认RDD的分区方式 87
Operations That Benefit from Partitioning/通过数据分区能提升Spark处理效率的操作 88
Operations That Affect Partitioning/会影响数据分区的操作 89
Example: PageRank/范例:PageRank算法 90
Custom Partitioners/自定义分区器 93
Conclusion/结论 95
Chapter 5 Loading and Saving Your Data/数据的读取与保存 97
Motivation/动机 97
File Formats/文件格式 99
Text Files 99
JSON 101
Comma-Separated Values and Tab-Separated Values 105
SequenceFiles 109
Object Files 113
Hadoop Input and Output Formats/Hadoop输入与输出格式 114
File Compression 119
Filesystems/文件系统 121
Local/“Regular” FS 121
Amazon S3 122
HDFS 122
Structured Data with Spark SQL/Spark SQL中的结构化数据 123
Apache Hive 124
JSON 125
Databases/数据库 126
Java Database Connectivity/Java数据库连接 126
Cassandra 128
HBase 131
Elasticsearch 132
Conclusion/结论 133
Chapter 6 Advanced Spark Programming/Spark编程进阶 135
Introduction/介绍 135
Accumulators/累加器 137
Accumulators and Fault Tolerance/累加器和容错性 141
Custom Accumulators/自定义累加器 142
Broadcast Variables/广播变量 143
Optimizing Broadcasts/最优化广播变量 146
Working on a Per-Partition Basis/基于分区进行的操作 147
Piping to External Programs/在Spark中调用外部程序的管道 151
Numeric RDD Operations/针对数值格式的RDD的操作 155
Conclusion/结论 157
Chapter 7 Running on a Cluster/在集群上运行Spark 159
Introduction/简介 159
Spark Runtime Architecture/Spark运行时架构 160
The Driver/驱动器程序 161
Executors/任务执行器 163
Cluster Manager/集群管理器 163
Launching a Program/启动一个程序 164
Summary 164
Deploying Applications with spark-submit/使用spark-submit部署应用 165
Packaging Your Code and Dependencies/打包程序代码和依赖 168
A Java Spark Application Built with Maven/使用Maven编译Spark Java应用程序 170
A Scala Spark Application Built with sbt/使用sbt编译Spark Scala应用程序 172
Dependency Conflicts/依赖冲突 174
Scheduling Within and Between Spark Applications/在不同Spark应用程序之间调度 175
Cluster Managers/集群管理器 176
Standalone Cluster Manager 177
Hadoop YARN 183
Apache Mesos/启动Mesos集群管理模式 184
Amazon EC2 186
Which Cluster Manager to Use?/应该用哪一个集群管理器? 190
Conclusion/结论 191
Chapter 8 Tuning and Debugging Spark/Spark程序调试与调优 193
Configuring Spark with SparkConf/通过SparkConf设置Spark 194
Components of Execution: Jobs, Tasks, and Stages/Spark任务运行的组成部分:Jobs, Tasks and Stages 199
Finding Information/查看Spark运行信息 205
Spark Web UI/Spark UI任务日志 206
Driver and Executor Logs 210
Key Performance Considerations/影响Spark程序运行性能的因素 211
Level of Parallelism/运算并行度 212
Serialization Format/数据的序列化 214
Memory Management/程序内存管理 215
Hardware Provisioning/硬盘资源分配 217
Conclusion/结论 219
Chapter 9 Spark SQL/Spark SQL组件 221
Linking with Spark SQL/与SparkSQL进行连接 223
Using Spark SQL in Applications/在应用中使用Spark SQL 225
Initializing Spark SQL/初始化SparkSQL 225
Basic Query Example/基本查询语句示例 227
DataFrames 228
Caching/数据缓存 231
Loading and Saving Data/读取和存储数据 233
Apache Hive 233
Data Sources/Parquet/数据源/Parquet格式 235
JSON 236
From RDDs 239
JDBC/ODBC Server/JDBC/ODBC服务器 240
Working with Beeline 242
Long-Lived Tables and Queries 244
User-Defined Functions/用户自定义函数 244
Spark SQL UDFs 245
Hive UDFs 246
Spark SQL Performance/Spark SQL运行表现调优 247
Performance Tuning Options/程序调优选项 248
Conclusion/结论 249
Chapter 10 Spark Streaming/Spark流计算 251
A Simple Example/一个简单的例子 252
Architecture and Abstraction/架构和抽象 256
Transformations/转换操作 260
Stateless Transformations/无状态转换操作 260
Stateful Transformations/有状态转换操作 264
Output Operations/输出操作 270
Input Sources/输入源 272
Core Sources/核心数据源 273
Additional Sources/其他数据源 275
Multiple Sources and Cluster Sizing/多数据源与集群规模 280
24/7 Operation/24/7不间断运行 281
Checkpointing/检查点 282
Driver Fault Tolerance/驱动程序容错 283
Worker Fault Tolerance/工作节点容错 285
Receiver Fault Tolerance/接收器容错 285
Processing Guarantees/处理保证 287
Streaming UI/Streaming用户界面 287
Performance Considerations/性能注意事项 288
Batch and Window Sizes/批次大小与窗口的大小 289
Level of Parallelism/并行度的级别 289
Garbage Collection and Memory Usage/垃圾回收与内存使用 290
Conclusion/结论 291
Chapter 11 Machine Learning with MLlib/使用MLlib实现机器学习 293
Overview/本章总览 294
System Requirements/系统需求 295
Machine Learning Basics/机器学习简要介绍 296
Example: Spam Classification 298
Data Types/数据类型 302
Working with Vectors/使用向量 303
Algorithms/机器学习算法 305
Feature Extraction/特征提取 306
Statistics/统计指标 310
Classification and Regression/分类与回归算法 311
Clustering 320
Collaborative Filtering and Recommendation/协同过滤与推荐算法 322
Dimensionality Reduction/数据降维 324
Model Evaluation/模型评估 327
Tips and Performance Considerations/使用提示及性能调优 328
Preparing Features/特征工程 328
Configuring Algorithms/参数调优 329
Caching RDDs to Reuse/缓存并复用RDD 329
Recognizing Sparsity/了解数据稀疏性 330
Level of Parallelism/适当的并行度 330
Pipeline API/基于Pipeline的机器学习API 331
Conclusion/结论 333
X
Spark快速大数据分析
IX
Contents
