封面
版权信息
版权声明
O'Reilly Media Inc.介绍
译者序
对本书的赞誉
序
前言
第 1 章 Apache Spark 简介:一站式分析引擎
1.1 Spark的起源
1.1.1 谷歌的大数据和分布式计算
1.1.2 雅虎的Hadoop
1.1.3 Spark在AMPLab崭露头角
1.2 什么是Spark
1.2.1 快速
1.2.2 易用
1.2.3 模块化
1.2.4 可扩展
1.3 一站式数据分析
1.3.1 由Spark组件组成的一站式软件栈
1.3.2 Spark的分布式执行
1.4 开发者体验
1.4.1 哪些人用Spark,用它做什么
1.4.2 社区接受度与社区发展
第 2 章 下载并开始使用 Apache Spark
2.1 第1步:下载Spark
Spark的目录和文件
2.2 第2步:使用Scala shell或PySpark shell
使用本地机器
2.3 第3步:理解Spark应用的相关概念
2.3.1 Spark应用与SparkSession
2.3.2 Spark作业
2.3.3 Spark执行阶段
2.3.4 Spark任务
2.4 转化操作、行动操作以及惰性求值
窄转化与宽转化
2.5 Spark UI
2.6 第一个独立应用
2.6.1 统计M&M巧克力豆
2.6.2 用Scala构建独立应用
2.7 小结
第 3 章 Apache Spark 的结构化数据 API
3.1 RDD的背后是什么
3.2 Spark支持结构化数据
关键优点与好处
3.3 DataFrame API
3.3.1 Spark的基本数据类型
3.3.2 Spark中结构化的复杂数据类型
3.3.3 表结构与DataFrame
3.3.4 列与表达式
3.3.5 行
3.3.6 常见的DataFrame操作
3.3.7 完整的DataFrame示例
3.4 Dataset API
3.4.1 有类型对象、无类型对象,以及普通行
3.4.2 创建Dataset
3.4.3 Dataset操作
3.4.4 完整的Dataset示例
3.5 对比DataFrame和Dataset
何时选用RDD
3.6 Spark SQL及其底层引擎
Catalyst优化器
3.7 小结
第 4 章 Spark SQL 与 DataFrame:内建数据源概览
4.1 在Spark应用中使用Spark SQL
基础查询示例
4.2 SQL表和视图
4.2.1 有管理表和无管理表
4.2.2 创建SQL数据库和SQL表
4.2.3 创建视图
4.2.4 查看元数据
4.2.5 缓存SQL表
4.2.6 将表读取为DataFrame
4.3 DataFrame和SQL表的数据源
4.3.1 DataFrameReader
4.3.2 DataFrameWriter
4.3.3 Parquet
4.3.4 JSON
4.3.5 CSV
4.3.6 Avro
4.3.7 ORC
4.3.8 图像
4.3.9 二进制文件
4.4 小结
第 5 章 Spark SQL 与 DataFrame:读写外部数据源
5.1 Spark SQL与Apache Hive
用户自定义函数
5.2 用Spark SQL shell、Beeline和Tableau查询
5.2.1 使用Spark SQL shell
5.2.2 使用Beeline
5.2.3 使用Tableau
5.3 外部数据源
5.3.1 JDBC和SQL数据库
5.3.2 PostgreSQL
5.3.3 MySQL
5.3.4 Azure Cosmos DB
5.3.5 MS SQL Server
5.3.6 其他外部数据源
5.4 DataFrame和Spark SQL的高阶函数
5.4.1 方式1:打散再重组
5.4.2 方式2:用户自定义函数
5.4.3 针对复杂数据类型的内建函数
5.4.4 高阶函数
5.5 常用的DataFrame操作和Spark SQL操作
5.5.1 联合
5.5.2 连接
5.5.3 窗口
5.5.4 修改
5.6 小结
第 6 章 Spark SQL 与 Dataset
6.1 Java与Scala共用一套API
用于Dataset的Scala样例类和JavaBean类
6.2 操作Dataset
6.2.1 创建示例数据
6.2.2 转化示例数据
6.3 Dataset与DataFrame的内存管理
6.4 Dataset编码器
6.4.1 Spark内部格式与Java对象格式
6.4.2 序列化与反序列化
6.5 使用Dataset的开销
减少开销的策略
6.6 小结
第 7 章 Spark 应用的优化与调优
7.1 为效率而优化与调优
7.1.1 查看与设置Spark配置
7.1.2 为大型作业扩展Spark
7.2 数据的缓存与持久化
7.2.1 DataFrame.cache()
7.2.2 DataFrame.persist()
7.2.3 什么时候应该缓存和持久化
7.2.4 什么时候不应该缓存和持久化
7.3 Spark的各种连接算法
7.3.1 广播哈希连接
7.3.2 混洗排序合并连接
7.4 查看Spark UI
Spark UI的标签页
7.5 小结
第 8 章 结构化流处理
8.1 Spark流处理引擎的演进过程
8.1.1 以微型批模拟的流处理
8.1.2 从DStream获取的经验教训
8.1.3 Structured Streaming的设计哲学
8.2 Structured Streaming的编程模型
8.3 Structured Streaming查询
8.3.1 五步定义流式查询
8.3.2 探究活跃的流式查询
8.3.3 失败恢复与“精确一次”语义
8.3.4 监控活跃的查询
8.4 流式数据源与数据池
8.4.1 文件
8.4.2 Kafka
8.4.3 自定义流式数据源与数据池
8.5 数据转化
8.5.1 增量执行与流处理状态
8.5.2 无状态转化操作
8.5.3 有状态转化操作
8.6 有状态的流式聚合
8.6.1 不根据时间维度进行聚合
8.6.2 使用事件时间窗口进行聚合
8.7 流式连接
8.7.1 流与静态表连接
8.7.2 流与流连接
8.8 任意的有状态计算
8.8.1 用mapGroupsWithState()为任意有状态操作建模
8.8.2 用超时管理不活跃的分组
8.8.3 用flatMapGroupsWithState()进行通用操作
8.9 性能调优
8.10 小结
第 9 章 用 Apache Spark 构建可靠的数据湖
9.1 最佳存储解决方案的重要特点
9.2 数据库
9.2.1 数据库简介
9.2.2 用Spark读写数据库
9.2.3 数据库的不足之处
9.3 数据湖
9.3.1 数据湖简介
9.3.2 用Spark读写数据湖
9.3.3 数据湖的不足之处
9.4 湖仓一体:下一代存储解决方案
9.4.1 Apache Hudi
9.4.2 Apache Iceberg
9.4.3 Delta Lake
9.5 用Spark与Delta Lake构建湖仓一体的系统
9.5.1 为使用Delta Lake配置Spark
9.5.2 把数据加载到Delta Lake表中
9.5.3 把数据流加载到Delta Lake表中
9.5.4 写数据时强化表结构约束以防止数据损坏
9.5.5 修改表结构以适应数据变化
9.5.6 转化已有数据
9.5.7 根据操作历史审计数据变更
9.5.8 用时间旅行功能查询表以前的快照数据
9.6 小结
第 10 章 用 MLlib 实现机器学习
10.1 什么是机器学习
10.1.1 监督学习
10.1.2 无监督学习
10.1.3 为什么将Spark用于机器学习
10.2 设计机器学习流水线
10.2.1 接入并探索数据
10.2.2 创建训练集与测试集
10.2.3 为转化器准备特征
10.2.4 理解线性回归
10.2.5 用预估器构建模型
10.2.6 创建流水线
10.2.7 评估模型
10.2.8 保存和加载模型
10.3 超参数调优
10.3.1 基于树的模型
10.3.2 k 折交叉验证
10.3.3 优化流水线
10.4 小结
第 11 章 用 Apache Spark 管理、部署与伸缩机器学习流水线
11.1 模型管理
MLflow
11.2 用MLlib部署模型所用的选项
11.2.1 批处理
11.2.2 流处理
11.2.3 导出模型用于实时预测的模式
11.3 利用Spark使用非MLlib模型
11.3.1 Pandas UDF
11.3.2 将Spark用于分布式超参数调优
11.4 小结
第 12 章 尾声:Apache Spark 3.0
12.1 Spark内核与Spark SQL
12.1.1 动态分区裁剪
12.1.2 自适应查询执行
12.1.3 SQL连接提示
12.1.4 Catalog插件API与DataSourceV2
12.1.5 可感知加速器的调度器
12.2 Structured Streaming
12.3 PySpark、Pandas UDF和Pandas函数API
12.3.1 重新设计的带有Python类型提示的Pandas UDF
12.3.2 Pandas UDF中的迭代器支持
12.3.3 新的Pandas函数API
12.4 有改动的功能
12.4.1 支持的与不推荐使用的编程语言
12.4.2 DataFrame API和Dataset API的改动
12.4.3 DataFrame与SQL的explain命令
12.5 小结
作者简介
封面简介
看完了
更新时间:2021-12-06 11:52:01