Spark实战
作者:郑美珠,田华,王佐兵译 (美国)彼得 泽斯维奇,马可 波纳奇
出版时间:2019年版
内容简介
本书介绍了Spark应用程序及更高级应用的工作流程,主要从使用角度进行了描述,每个具体内容都有对应的代码。本书涵盖了Apache Spark和它丰富的API,构成Spark的组件(包括Spark SQL、Spark Streaming、Spark MLlib和Spark GraphX),在Spark standalone、 Hadoop YARN以及 Mesos clusters上运行Spark应用程序的部署和安装。通过对应的实例全面、详细地介绍了整个Spark实战开发的流程。*后,还介绍了Spark的高级应用,包括Spark流应用程序及可扩展和快速的机器学习框架H2O。 \n本书可以作为高等院校计算机、软件工程、数据科学与大数据技术等专业的大数据课程材料,可用于指导Spark编程实践,也可供相关技术人员参考使用。
目录
目录 \n
译者序 \n
致谢 \n
前言 \n
关于本书 \n
关于作者 \n
关于封面 \n
第1部分 第1步 \n
第1章 Apache Spark介绍 \n
1.1什么是Spark \n
1.1.1 Spark革命 \n
1.1.2 MapReduce的缺点 \n
1.1.3 Spark带来了什么有价值的东西 \n
1.2 Spark组件 \n
1.2.1 Spark核心 \n
1.2.2 Spark SQL \n
1.2.3 Spark Streaming \n
1.2.4 Spark MLlib \n
1.2.5 Spark GraphX \n
1.3 Spark程序流 \n
1.4 Spark生态系统 \n
1.5 建立spark-in-action 虚拟机 \n
1.5.1下载启动虚拟机 \n
1.5.2 停止虚拟机 \n
1.6总结 \n
第2章 Spark基础 \n
2.1使用spark-in-action虚拟机 \n
2.1.1 复制Spark in Action GitHub存储库 \n
2.1.2 找到java \n
2.1.3 用虚拟机的Hadoop安装 \n
2.1.4 检查虚拟机的Spark安装 \n
2.2用Spark shell(壳)编写第一个Spark程序 \n
2.2.1 启动Spark shell \n
2.2.2 第一个Spark代码示例 \n
2.2.3 弹性分布式数据集的概念 \n
2.3基础RDD行为和转换 \n
2.3.1 使用用map转换 \n
2.3.2 使用distinct和flatMap 转换 \n
2.3.3 使用sample、take和takeSample操作获取RDD的元素 \n
2.4 Double RDD功能 \n
2.4.1 Double RDD基本统计 \n
2.4.2 使用直方图可视化数据分布 \n
2.4.3 近似求和与平均值 \n
2.5 总结 \n
第3章 编写Spark应用程序 \n
3.1在Eclipse上生成一个新的Spark项目 \n
3.2开发应用程序 \n
3.2.1 准备 GitHub 档案数据 \n
3.2.2 加载 JSON \n
3.2.3 从Eclipse运行应用 \n
3.2.4 数据汇总 \n
3.2.5 排除非公司员工 \n
3.2.6 广播变量 \n
3.2.7 使用整个数据集 \n
3.3提交应用程序 \n
3.3.1 建立uberjar \n
3.3.2 调整应用程序 \n
3.3.3 使用spark-submit \n
3.4 总结 \n
第4章 深入Spark API \n
4.1使用键值对RDD \n
4.1.1 创建键值对RDD \n
4.1.2 键值对RDD的基本功能 \n
4.2了解数据分区和减少数据混排 \n
4.2.1 使用spark数据分区器 \n
4.2.2 了解和避免不必要的数据混排 \n
4.2.3 RDD重新分区 \n
4.2.4 在分区中映射数据 \n
4.3 连接、排序、分组数据 \n
4.3.1 连接数据 \n
4.3.2 数据排序 \n
4.3.3 数据分组 \n
4.4 理解RDD依赖 \n
4.4.1 RDD依赖和Spark执行 \n
4.4.2 Spark阶段和任务 \n
4.4.3 使用检查点保存Spark谱系 \n
4.5 使用累加器和广播变量与spark执行器进行沟通 \n
4.5.1 使用累加器从执行器获取数据 \n
4.5.2 使用广播变量将数据发送数据到执行器 \n
4.6总结 \n
第二部分 认识Spark家族 \n
第5章 Spark SQL查询 \n
5.1使用DataFrames \n
5.1.1 从RDD创建DataFrames \n
5.1.2 DataFrame API 基础知识 \n
5.1.3 用SQL函数执行数据计算 \n
5.1.4 使用缺失值 \n
5.1.5 将DataFrames转换为RDD \n
5.1.6 分组和连接数据 \n
5.1.7 执行连接 \n
5.2超越DataFrames:引入DataSet \n
5.3使用SQL命令 \n
5.3.1 表目录和Hive metastore \n
5.3.2 执行SQL查询 \n
5.3.3 通过Thrift服务器连接到Spark SQL \n
5.4保存并加载DataFrame 数据 \n
5.4.1 内置数据源 \n
5.4.2 保存数据 \n
5.4.3 加载数据 \n
5.5 Catalyst 优化器 \n
5.6 Tungsten性能改进 \n
5.7总结 \n
第6章 使用Spark Streaming提取数据 \n
6.1编写Spark Streaming应用程序 \n
6.1.1 介绍示例程序 \n
6.1.2 创建流上下文 \n
6.1.3 创建离散流 \n
6.1.4 使用离散流 \n
6.1.5 把结果保存到文档 \n
6.1.6 启动和停止流计算 \n
6.1.7 随着保存计算状态 \n
6.1.8 使用窗口操作进行限制计算 \n
6.1.9 检查其他内置输入流 \n
6.2使用外部数据源 \n
6.2.1 设置kafka \n
6.2.2 使用kafka更改流应用程序 \n
6.3 Spark Streaming任务的性能 \n
6.3.1 获得良好的性能 \n
6.3.2 实现容错 \n
6.4结构化流 \n
6.4.1 创建流式DataFrame \n
6.4.2 输出流数据 \n
6.4.3 检查流执行 \n
6.4.4 结构化流的未来方向 \n
6.5总结 \n
第7章 使用MLlib变聪明 \n
7.1机器学习简介 \n
7.1.1 机器学习的定义 \n
7.1.2 机器学习算法分类 \n
7.1.3 使用Spark进行机器学习 \n
7.2 Spark中的线性代数 \n
7.2.1 本地向量与矩阵实现 \n
7.2.2 分布式矩阵 \n
7.3线性回归 \n
7.3.1 有关线性回归 \n
7.3.2 简单的线性回归 \n
7.3.3 将模型扩展到多元线性回归 \n
7.4分析和准备数据 \n
7.4.1 分析数据分布 \n
7.4.2 分析列余弦相似性 \n
7.4.3 协方差矩阵的计算 \n
7.4.4 转化为标记点 \n
7.4.5 拆分数据 \n
7.4.6 特征缩放和平均归一化 \n
7.5拟合和使用线性回归模型 \n
7.5.1 预测目标值 \n
7.5.2 评估模型性能 \n
7.5.3 解释模型参数 \n
7.5.4 加载和保存模型 \n
7.6调整算法 \n
7.6.1 找到正确的步长和迭代次数 \n
7.6.2 添加高阶多项式 \n
7.6.3 偏差-方差权衡和模型复杂度 \n
7.6.4 绘制残差图 \n
7.6.5 利用正则化避免过度拟合 \n
7.6.6 k折交叉验证 \n
7.7优化线性回归 \n
7.7.1 小批量随机梯度下降 \n
7.7.2 LBFGS优化 \n
7.8总结 \n
八、ML:分类和聚类 \n
8.1 Spark ML 图书馆 \n
8.1.1 估计器,变压器和评估器 \n
8.1.2 ML参数 \n
8.1.3 ML管道 \n
8.2逻辑回归 \n
8.2.1 二元逻辑回归模型 \n
8.2.2准备数据在Spark中使用逻辑回归 \n
8.2.3 训练模型 \n
8.2.4 评估分类模型 \n
8.2.5 执行k折交叉验证 \n
8.2.6 多类逻辑回归 \n
8.3决策树和随机森林 \n
8.3.1 决策树 \n
8.3.2 随机森林 \n
8.4使用k均值聚类 \n
8.4.1 k均值聚类 \n
8.5总结 \n
第9章 使用GraphX连接点 \n
9.1 Spark图处理 \n
9.1.1 使用GraphX API构造图 \n
9.1.2 转换图 \n
9.2图算法 \n
9.2.1 数据集的介绍 \n
9.2.2 最短路径算法 \n
9.2.3 页面排名 \n
9.2.4 连通分量 \n
9.2.5 强连通分量 \n
9.3实现A *搜索算法 \n
9.3.1 了解A *搜索算法 \n
9.3.2 实现A *搜索算法 \n
9.3.3 测试实现 \n
9.4总结 \n
第3部分 Spark ops \n
第10章 运行Spark \n
10.1 Spark的运行时架构概述 \n
10.1.1 Spark运行组件 \n
10.1.2 Spark集群类型 \n
10.2作业与资源调度 \n
10.2.1 集群资源调度 \n
10.2.2 Spark作业调度 \n
10.2.3 数据局部性考虑 \n
10.2.4 Spark内存调度 \n
10.3配置Spark \n
10.3.1 Spark配置文件 \n
10.3.2 命令行参数 \n
10.3.3 系统环境变量 \n
10.3.4 译编程方式设置配置 \n
10.3.5 master参数 \n
10.3.6 查看所有配置的参数 \n
10.4 Spark Web UI (网络用户界面) \n
10.4.1 Jobs(作业)页面 \n
10.4.2 Stages(阶段)页面 \n
10.4.3 Storage(存储)页面 \n
10.4.4 Environment(环境)页面 \n
10.4.5 Executors(执行器)页面 \n
10.5在本地机器运行Spark \n
10.5.1 本地模式 \n
10.5.2 本地集群模式 \n
10.6总结 \n
第11章 在Spark独立集群上运行 \n
11.1 Spark Standalone集群组件 \n
11.1.1 启动Stanalone集群 \n
11.1.2 用shell脚本启动群集 \n
11.1.3 手动启动集群 \n
11.1.4 查看Spark进程 \n
11.1.5 Standalone master高可用性和恢复 \n
11.3 Standalone集群网络用户界面 \n
11.4 在3Standalone集群中运行应用程序 \n
11.4.1 驱动器的位置 \n
11.4.2 指定执行器的数量 \n
11.4.3 指定额外的类路径和文件 \n
11.4.4 终止应用程序 \n
11.4.5 应用程序自动重启 \n
11.5 Spark历史记录服务器和事件日志记录 \n
11.6 在Amazon EC2上运行 \n
11.6.1 先决条件 \n
11.6.2 创建一个E2C独立集群 \n
11.6.3 使用E2C集群 \n
11.6.4 销毁集群 \n
11.7 总结 \n
第12章 在YARN and Mesos运行 \n
12.1 在YARN上运行Spark \n
12.1.1 YARN架构 \n
12.1.2 安装配置启动YARN \n
12.1.3 YARN中的资源调度 \n
12.1.4 向YARN提交Spark应用程序 \n
12.1.5 在YARN上配置Spark \n
12.1.6 为Spark工作配置资源 \n
12.1.7 YARN UI \n
12.1.8 在YARN上寻找日志 \n
12.1.9 安全注意事项 \n
12.1.10 动态资源分配 \n
12.2在Mesos上运行Spark \n
12.2.1 Mesos架构 \n
12.2.2 安装配置Mesos \n
12.2.3 Mesos Web UI \n
12.2.4 Mesos资源调度 \n
12.2.5 向Mesos提交Spark应用程序 \n
12.2.6 使用 Docker运行Spark \n
12.3总结 \n
第4部分 协同使用 \n
第13章 实例学习:实时仪表盘 \n
13.1了解用例 \n
13.1.1 概况 \n
13.1.2 了解应用程序组件 \n
13.2 运行应用程序 \n
13.2.1 在spark-in-action VM中运行应用程序 \n
13.2.2 手动启动应用程序 \n
13.3 理解源代码 \n
13.3.1 KafkaLogsSimulator项目 \n
13.3.2 Streaming Log Analyzer项目 \n
13.3.3 Web统计信息显示板项目 \n
13.3.4 建设项目 \n
13.4总结 \n
第14章 H20深入学习Spark \n
14.1什么是深入学习 \n
14.2 在Spark中使用H2O和 \n
14.2.1 什么是H2O \n
14.4.2 在Spark中启动Sparkling Water \n
14.4.3 启动H2O集群 \n
14.4.4 访问Flow UI \n
14.3 使用H2O的深度学习进行回归 \n
14.4.3 将数据加载到H2O框架中 \n
14.4.4 使用Flow UI构建和评估深度学习模型 \n
14.4.5 使用Sparkling Water API构建和评估深度学习模型 \n
14.4使用H2O的深度学习进行分类 \n
14.4.1 加载和拆分数据 \n
14.4.2 通过Flow UI 建造模型 \n
14.4.3 通过Sparkling Water API建造模型 \n
14.4.4 停止H2O集群 \n
14.5总结 \n
附录A 安装Apache Spark \n
附录B 了解MapReduce \n
附录C 线性代数基础