《Spark IN ACTION实战》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:郑美珠,田华,王佐兵译;(美国)彼得·泽斯维奇,马可·波纳奇
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2019
  • ISBN:9787111617488
  • 页数:372 页
图书介绍:本书介绍了Spark应用程序及更高级应用的工作流程,主要从使用角度进行了描述,每个具体内容都有对应的代码。本书涵盖了Apache Spark和它丰富的API、构成Spark的组件(包Spark SQL、Spark Streaming、Spark MLlib和Spark GraphX)、在Spark standalone、 Hadoop YARN以及 Mesos clusters上运行Spark应用程序的部署和安装。通过对应的实例全面、详细介绍了整个Spark实战开发的流程。最后,还介绍了Spark的高级应用:Spark流应用程序及可扩展和快速的机器学习框架H2O。本书可以作为高等院校计算机、软件工程、数据科学与大数据技术等专业的进阶级大数据课程教材,用于指导Spark编程实践,也可供相关技术人员参考。

第1部分 第1步 3

第1章 Apache Spark简介 3

1.1 什么是Spark 4

1.1.1 Spark革命 4

1.1.2 MapReduce的缺点 5

1.1.3 Spark带来了什么有价值的东西 5

1.2 Spark组件 7

1.2.1 Spark Core 7

1.2.2 Spark SQL 8

1.2.3 Spark Streaming 9

1.2.4 Spark MLlib 9

1.2.5 Spark GraphX 9

1.3 Spark程序流程 9

1.4 Spark生态系统 12

1.5 设置spark-in-action VM 13

1.5.1 下载和启动虚拟机 13

1.5.2 关闭虚拟机 14

1.6 总结 15

第2章 Spark基础 16

2.1 使用spark-in-action VM 17

2.1.1 复制Spark in Action GitHub存储库 17

2.1.2 找到Java 17

2.1.3 使用虚拟机的Hadoop安装 18

2.1.4 检查虚拟机的Spark安装 19

2.2 用Spark shell编写第一个Spark程序 20

2.2.1 启动Spark shell 20

2.2.2 第一个Spark代码示例 22

2.2.3 弹性分布式数据集的概念 24

2.3 基本RDD行动和转换操作 24

2.3.1 使用map转换 25

2.3.2 使用distinct和flatMap转换 27

2.3.3 使用sample、 take和takeSample操作获取RDD的元素 30

2.4 Double RDD函数 32

2.4.1 Double RDD函数基础统计 33

2.4.2 使用直方图可视化数据分布 34

2.4.3 近似总和与平均 34

2.5 总结 35

第3章 编写Spark应用程序 36

3.1 在Eclipse中生成一个新的Spark项目 36

3.2 开发应用程序 41

3.2.1 准备GitHub归档数据集 41

3.2.2 加载JSON 43

3.2.3 使用Eclipse运行应用程序 45

3.2.4 数据汇总 47

3.2.5 排除非公司员工 48

3.2.6 广播变量 49

3.2.7 使用整个数据集 52

3.3 提交应用程序 53

3.3.1 构建uberjar 53

3.3.2 调整应用程序 54

3.3.3 使用spark-submit 56

3.4 总结 58

第4章 深入Spark API 60

4.1 使用键值对RDD 60

4.1.1 创建键值对RDD 61

4.1.2 键值对RDD的基本功能 61

4.2 了解数据分区和减少数据混排 66

4.2.1 使用Spark数据分区器 67

4.2.2 了解和避免不必要的混排 68

4.2.3 RDD重新分区 71

4.2.4 在分区中映射数据 72

4.3 连接、排序、分组数据 73

4.3.1 连接数据 74

4.3.2 数据排序 79

4.3.3 数据分组 82

4.4 理解RDD依赖 84

4.4.1 RDD依赖和Spark执行 84

4.4.2 Spark阶段和任务 86

4.4.3 使用检查节点保存Spark谱系 87

4.5 使用累加器和广播变量与Spark执行器进行通信 87

4.5.1 使用累加器从执行器获取数据 87

4.5.2 使用广播变量将数据发送到执行器 89

4.6 总结 90

第2部分 认识Spark家族 95

第5章 使用Spark SQL执行Spark查询 95

5.1 使用DataFrame 96

5.1.1 从RDD创建DataFrame 98

5.1.2 DataFrame API基础知识 105

5.1.3 使用SQL函数执行数据计算 107

5.1.4 使用缺失值 112

5.1.5 将DataFrame转换为RDD 113

5.1.6 分组和连接数据 113

5.1.7 执行连接 117

5.2 超越DataFrame:引入DataSet 118

5.3 使用SQL命令 119

5.3.1 表目录和Hive metastore 119

5.3.2 执行SQL查询 122

5.3.3 通过Thrift服务器连接到Spark SQL 123

5.4 保存并加载DataFrame数据 125

5.4.1 内置数据源 126

5.4.2 保存数据 126

5.4.3 加载数据 128

5.5 Catalyst优化器 129

5.6 Tungsten的性能改进 131

5.7 总结 132

第6章 使用Spark Streaming提取数据 133

6.1 编写Spark Streaming应用程序 134

6.1.1 介绍示例应用程序 134

6.1.2 创建流上下文 135

6.1.3 创建离散流 136

6.1.4 使用离散流 137

6.1.5 将结果保存到文件 138

6.1.6 启动和停止流计算 139

6.1.7 随时保存计算状态 140

6.1.8 使用窗口操作进行限时计算 146

6.1.9 检查其他内置输入流 148

6.2 使用外部数据源 149

6.2.1 设置Kafka 149

6.2.2 使用Kafka更改流应用程序 150

6.3 Spark Streaming作业的性能 156

6.3.1 获得良好的性能 157

6.3.2 实现容错 158

6.4 结构化流 159

6.4.1 创建流式DataFrame 160

6.4.2 输出流数据 160

6.4.3 检查流执行 161

6.4.4 结构化流的未来方向 161

6.5 总结 162

第7章 使用MLlib变得更智能 163

7.1 机器学习简介 164

7.1.1 机器学习的定义 166

7.1.2 机器学习算法的分类 166

7.1.3 使用Spark进行机器学习 168

7.2 Spark中的线性代数 169

7.2.1 本地向量和矩阵实现 169

7.2.2 分布式矩阵 173

7.3 线性回归 174

7.3.1 关于线性回归 174

7.3.2 简单线性回归 174

7.3.3 将模型扩展到多元线性回归 176

7.4 分析和准备数据 178

7.4.1 分析数据分布 178

7.4.2 分析列余弦相似性 179

7.4.3 计算协方差矩阵 179

7.4.4 转换为标记点 180

7.4.5 拆分数据 180

7.4.6 特征缩放和均值归一化 181

7.5 拟合和使用线性回归模型 181

7.5.1 预测目标值 182

7.5.2 评估模型的性能 182

7.5.3 解释模型参数 183

7.5.4 加载和保存模型 183

7.6 调整算法 184

7.6.1 找到正确的步长和迭代次数 184

7.6.2 添加高阶多项式 186

7.6.3 偏差-方差权衡和模型复杂度 187

7.6.4 绘制残差图 189

7.6.5 使用正则化避免过度拟合 190

7.6.6 k折交叉验证 191

7.7 优化线性回归 192

7.7.1 小批量随机梯度下降 192

7.7.2 LBFGS优化器 193

7.8 总结 194

第8章 ML:分类和聚类 195

8.1 Spark ML库 196

8.1.1 估计器、转换器和评估器 196

8.1.2 ML参数 196

8.1.3 ML管道 197

8.2 逻辑回归 197

8.2.1 二元逻辑回归模型 198

8.2.2 准备数据以使用Spark中的逻辑回归 199

8.2.3 训练模型 204

8.2.4 评估分类模型 205

8.2.5 执行k折交叉验证 208

8.2.6 多类逻辑回归 210

8.3 决策树和随机森林 212

8.3.1 决策树 213

8.3.2 随机森林 217

8.4 使用k-均值聚类 219

8.4.1 k-均值聚类 220

8.5 总结 224

第9章 使用GraphX连接点 226

9.1 Spark图形处理 226

9.1.1 使用GraphX API构建图 227

9.1.2 转换图 228

9.2 图算法 233

9.2.1 数据集的介绍 234

9.2.2 最短路径算法 235

9.2.3 页面排名 236

9.2.4 连通分量 236

9.2.5 强连通分量 237

9.3 实现A*搜索算法 239

9.3.1 了解A*算法 239

9.3.2 实现A*算法 241

9.3.3 测试的实施 248

9.4 总结 249

第3部分 Spark ops 253

第10章 运行Spark 253

10.1 Spark运行时体系结构概述 253

10.1.1 Spark运行时组件 254

10.1.2 Spark集群类型 256

10.2 作业和资源调度 257

10.2.1 集群资源调度 257

10.2.2 Spark作业调度 257

10.2.3 数据局部性的考虑 259

10.2.4 Spark内存调度 260

10.3 配置Spark 261

10.3.1 Spark配置文件 261

10.3.2 命令行参数 261

10.3.3 系统环境变量 262

10.3.4 以编程方式设置配置 262

10.3.5 master参数 262

10.3.6 查看所有已配置的参数 263

10.4 Spark Web UI 263

10.4.1 Jobs(作业)页面 264

10.4.2 Stages(阶段)页面 264

10.4.3 Storage(存储)页面 267

10.4.4 Environment(环境)页面 267

10.4.5 Executors(执行器)页面 268

10.5 在本地机器上运行Spark 269

10.5.1 本地模式 269

10.5.2 本地集群模式 270

10.6 总结 270

第11章 在Spark standalone集群上运行 272

11.1 Spark standalone集群组件 272

11.2 启动standalone集群 274

11.2.1 使用shell脚本启动集群 274

11.2.2 手动启动集群 276

11.2.3 查看Spark进程 277

11.2.4 Standalone master高可用性和恢复性 277

11.3 Standalone集群Web UI 279

11.4 在standalone集群中运行应用程序 281

11.4.1 驱动器的位置 281

11.4.2 指定执行器的数量 282

11.4.3 指定额外的类路径和文件 282

11.4.4 终止应用程序 284

11.4.5 应用程序自动重启 284

11.5 Spark历史服务器和事件日志记录 284

11.6 在Amazon EC2上运行 285

11.6.1 先决条件 286

11.6.2 创建一个EC2 standalone集群 287

11.6.3 使用EC2集群 289

11.6.4 销毁集群 291

11.7 总结 292

第12章 在YARN和Mesos上运行 293

12.1 在YARN上运行Spark 293

12.1.1 YARN架构 294

12.1.2 安装配置启动YARN 294

12.1.3 YARN中的资源调度 296

12.1.4 向YARN提交Spark应用程序 297

12.1.5 在YARN上配置Spark 299

12.1.6 为Spark工作配置资源 300

12.1.7 YARN UI 301

12.1.8 在YARN上寻找日志 303

12.1.9 安全注意事项 304

12.1.10 动态资源分配 304

12.2 在Mesos上运行Spark 305

12.2.1 Mesos架构 306

12.2.2 安装配置Mesos 309

12.2.3 Mesos Web UI 310

12.2.4 Mesos资源调度 312

12.2.5 向Mesos提交Spark应用程序 313

12.2.6 使用 Docker运行Spark 314

12.3 总结 317

第4部分 协同使用 321

第13章 实例学习:实时仪表盘 321

13.1 了解用例 321

13.1.1 概况 321

13.1.2 了解应用程序组件 323

13.2 运行应用程序 324

13.2.1 在spark-in-action VM中运行应用程序 325

13.2.2 手动启动程序 328

13.3 理解源代码 330

13.3.1 KafkaLogsSimulator项目 330

13.3.2 StreamingLogAnalyzer项目 331

13.3.3 WebStatsDashboard项目 337

13.3.4 构建项目 337

13.4 总结 338

第14章 用H2O深入学习Spark 339

14.1 什么是深度学习 339

14.2 在Spark中使用H2O 341

14.2.1 什么是H2O 341

14.2.2 在Spark中启动Sparkling Water 342

14.2.3 启动H2O集群 344

14.2.4 访问Flow UI 344

14.3 使用H2O的深度学习进行回归 346

14.3.1 将数据加载到 H2O框架 346

14.3.2 使用Flow UI构建和评估深度学习模型 349

14.3.3 使用Sparkling Water API构建和评估深度学习模型 352

14.4 使用H2O的深度学习进行分类 357

14.4.1 加载和拆分数据 357

14.4.2 通过Flow UI构建模型 358

14.4.3 使用Sparkling Water API构建模型 361

14.4.4 停止H2O集群 362

14.5 总结 362

附录 363

附录A 安装Apache Spark 363

附录B 了解MapReduce 368

附录C 线性代数入门 370