图书目录

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