展开全部

主编推荐语

涵盖Spark 3.0的新特性,着重展示如何利用机器学习算法执行大数据分析。

内容简介

本书的主角是在大数据时代应运而生的数据处理与分析利器——Spark。你将通过丰富的示例学习如何使用Spark的结构化数据API,利用Spark SQL进行交互式查询,掌握Spark应用的优化之道,用Spark和Delta Lake等开源工具构建可靠的数据湖,并用MLlib库实现机器学习流水线。

随着Spark从2.x版本升级到3.0版本,本书第2版做了全面的更新,以体现Spark生态系统在机器学习、流处理技术等方面的发展,另新增一章详解Spark 3.0引入的新特性。

目录

  • 版权信息
  • 版权声明
  • 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 模型管理
  • 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 小结
  • 作者简介
  • 封面简介
  • 看完了
展开全部

评分及书评

4.4
5个评分
  • 用户头像
    给这本书评了
    4.0
    可能是最新的Spark中文工具书

    最大的优点:汉化的速度快,非常新。很多 Spark 的最新特性,如 3.xTungstenWholestagecodegen 都涉及到了,很多都是今年才成熟的新功能,可以说这本书的覆盖范围已经超过了很多企业的 Spark 版本范围了。对于想要升级 Spark 版本的团队,这本书可以作为重要的参考。当然扣分项也是有的,比如一些新特性也是泛泛而谈。如果你只看本书就像掌握 Dataset 编程估计够呛;另外翻译问题也是捉急,排序合并连接读起来有多拗口就多拗口,直接使用原义 sort merge join 对大数据工程师来说不是更好懂?很多技术文章都是这么干的… 也分享一下本人的 Spark 学习建议,在本书的基础上深入阅读官方文档,至少对官网的谋篇布局熟记于心,这样方便遇到问题时更深入地学习。开通 Medium,每天上去看看 Spark 的推荐文章,日拱一卒。最后,Dataset+Frameless 才是 Spark 开发的终极大招,不但你的日常开发会变得轻松愉快,还能彻底帮你摆脱 SQL boy 的内卷生涯。

      转发
      评论
      用户头像
      给这本书评了
      4.0

      比较适合新人扫盲,内部细节介绍不太深入

        转发
        评论

      出版方

      人民邮电出版社

      人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。