×
暂无评论
图文详情
  • ISBN:9787519863531
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:16开
  • 页数:372
  • 出版时间:2018-01-01
  • 条形码:9787519863531 ; 978-7-5198-6353-1

本书特色

Apache Spark扩展、优化的*佳实践在一切都顺利时,Apache Spark会带给你极致的体验。但如果你没有达到所希望的性能提升结果,或者对于生产上应用Spark没有足够的信心,那么这本书对你来说很实用。在这里,本书作者通过一些性能优化让Spark查询运行得更快,能够处理更大的数据量级,同时只用到更少的资源。 本书提到的相关技术可以节约数据系统架构的成本以及开发人员的时间,适用软件工程师、数据工程师,以及面对大规模数据应用的系统管理员。此外你还可以加深对Spark的理解,然后学会如何驾驭它。 “本书可以帮助你设计出生产级别Apache Spark方案。同时有助于理解一些关键的Spark优化和内部原理。”——Denny Lee微软Azure DocumentDB团队核心项目经理

内容简介

通过本书,你可以了解到:Spark SQL的新接口如何为SQL的RDD数据结构提升性能。Spark Core与Spark SQL中数据join的不同选择方式。充分利用标准RDD转换的技术。如何解决Spark中键值范式的性能问题。不借助Scala或其他JVM语言来编写高性能的Spark代码。采用改进建议后,如何来测试其功能及性能情况。使用Spark MLlib和Spark ML机器学习库。Spark的流处理组件、外部的社区扩展包。

目录

目录
前言 .1
第1 章 高性能Spark 介绍 7
1.1 Spark 是什么以及性能的重要性 .7
1.2 你可以从本书中得到什么 8
1.3 Spark 版本 .9
1.4 为什么是 Scala ? 9
1.4.1 成为一名 Spark 专家必须要学习一点 Scala .9
1.4.2 Spark 的 Scala API 比 Java API 更好用 10
1.4.3 Scala 比 Python 更高效 10
1.4.4 为什么不用 Scala ? 11
1.4.5 学习 Scala 11
1.5 小结 12
第2 章 Spark 运行原理 .13
2.1 Spark 如何融入大数据生态系统 14
2.2 Spark 并行计算模型:RDD 16
2.2.1 惰性求值 17
2.2.2 内存持久化和内存管理 20
2.2.3 不可变性和 RDD 接口 . 21
2.2.4 RDD 的类型 23
2.2.5 RDD 上的函数:转换与行动 24
2.2.6 宽依赖和窄依赖 25
2.3 Spark 作业调度 . 27
2.3.1 应用程序间的资源分配 27
2.3.2 Spark 应用程序 . 28
2.4 Spark Job 剖析 29
2.4.1 有向无环图(DAG) 30
2.4.2 作业(Job) 31
2.4.3 阶段(Stage) 31
2.4.4 任务(Task) 32
2.5 小结 34
第 3 章 DataFrame、Dataset 和Spark SQL 35
3.1 从 SparkSession(或者 HiveContext 和 SQLContext)入门 . 36
3.2 Spark SQL 依赖 39
3.2.1 管理 Spark 依赖 39
3.2.2 避免使用 Hive JAR 40
3.3 schema 基础 41
3.4 DataFrame API 45
3.4.1 转换 45
3.4.2 基于多个 DataFrame 的转换 . 56
3.4.3 普通的 SQL 查询以及与 Hive 数据交互 . 57
3.5 DataFrame 和 Dataset 中的数据表示 . 58
3.6 数据加载和保存函数 . 59
3.6.1 DataFrameWriter 和 DataFrameReader . 60
3.6.2 格式 60
3.6.3 保存模式 70
3.6.4 分区(发现和写入) . 70
3.7 Dataset 71
3.7.1 与 RDD、DataFrame 和本地集合的互操作性 72
3.7.2 编译时强类型 73
3.7.3 简易函数式转换操作(类似 RDD) . 74
3.7.4 关系型转换操作 74
3.7.5 多 Dataset 关系转换操作 . 75
3.7.6 Dataset 的分组操作 75
3.8 使用用户自定义的函数和聚合函数(UDF、UDAF)进行扩展 . 76
3.9 查询优化器 . 79
3.9.1 逻辑和物理计划 79
3.9.2 代码生成 79
3.9.3 大型查询计划和迭代算法 80
3.10 调试 Spark SQL 查询 80
3.11 JDBC/ODBC 服务器 81
3.12 小结 . 82
第 4 章 Join (SQL 和Spark Core) 84
4.1 Spark Core 中的 Join . 84
4.1.1 选择 Join 类型 86
4.1.2 选择执行计划 88
4.2 Spark SQL 中的 Join 91
4.2.1 DataFrame 的 Join 91
4.2.2 Dataset 的 Join 95
4.3 小结 96
第 5 章 高效的转换 .97
5.1 窄转换与宽转换 98
5.1.1 对于性能的影响 100
5.1.2 对于容错的影响 101
5.1.3 coalesce 的特殊情况 102
5.2 转换会返回什么类型的 RDD . 102
5.3 *小化对象创建成本 104
5.3.1 重用现有对象 . 104
5.3.2 使用更小的数据结构 108
5.4 mapPartitions 迭代器到迭代器的转换 111
5.4.1 什么是迭代器到迭代器的转换? 112
5.4.2 空间和时间优势 113
5.4.3 案例 . 114
5.5 集合操作 117
5.6 降低初始化开销 118
5.6.1 共享变量 119
5.6.2 广播变量 119
5.6.3 累加器 121
5.7 重用 RDD . 125
5.7.1 重用的案例 126
5.7.2 判断重新计算是否足够划算 129
5.7.3 重用类型:缓存、持久化、检查点、shuffle 文件 130
5.7.4 Alluxio(之前的 Tachyon) 135
5.7.5 LRU 缓存 . 135
5.7.6 繁忙集群的注意事项 137
5.7.7 与累加器交互 . 138
5.8 小结 . 139
第 6 章 处理键值对数据 . 140
6.1 金发女孩案例 . 142
6.1.1 金发女孩之版本 0:迭代方案 143
6.1.2 如何使用 PairRDDFunctions 和 OrderedRDDFunctions 146
6.2 键值对上的行动操作 147
6.3 groupByKey 函数有什么风险 . 148
6.3.1 金发女孩之版本 1:groupByKey 方案 148
6.3.2 为什么 groupByKey 会失败 150
6.4 选择聚合操作 . 152
6.5 涉及多个 RDD 的操作 156
6.6 分区器和键值对数据 157
6.6.1 使用 Spark 的分区器对象 . 158
6.6.2 哈希分区 158
6.6.3 范围分区 159
6.6.4 自定义分区 160
6.6.5 保留跨不同转换的分区信息 160
6.6.6 利用协同位置(Co-located)和协同分区(Co-Partitioned)
的 RDD 161
6.6.7 PairRDDFunctions 中关于映射和分区函数的字典 163
6.7 OrderedRDDFunctions 字典 165
6.8 二级排序和 repartitionAndSortWithinPartitions 167
6.8.1 在按键分组和按值排序的函数中利用
repartitionAndSortWithinPartitions 168
6.8.2 如何不按照两个排序键排序 172
6.8.3 金发女孩之版本 2:二级排序 172
6.8.4 金发女孩问题的另外一种不同解法 . 176
6.8.5 金发女孩之版本 3:对单元格值排序 . 181
6.9 掉队检测与不均衡数据 . 182
6.9.1 再次回到金发女孩问题 . 184
6.9.2 金发女孩之版本 4:在每个分区上归并为不同值 184
6.10 小结 191
第 7 章 Scala 之外 192
7.1 JVM 之内、Scala 之外 194
7.2 Scala 之外、JVM 之外 198
7.2.1 PySpark 工作原理 . 198
7.2.2 SparkR 工作原理 207
7.2.3 Spark.jl(Julia Spark) 209
7.2.4 Eclair JS 工作原理 210
7.2.5 Spark 基于公共语言运行时(CLR),C# 及类似语言 211
7.3 在 Spark 中调用其他语言 . 211
7.3.1 使用管道及类似工具 211
7.3.2 JNI 213
7.3.3 Java 本地访问(JNA) . 216
7.3.4 一切的背后都是 FORTRAN 217
7.3.5 谈谈 GPU . 218
7.4 未来 . 219
7.5 小结 . 219
第 8 章 测试和验证 221
8.1 单元测试 221
8.1.1 一般 Spark 单元测试 222
8.1.2 模拟 RDD . 227
8.2 获取测试数据 . 228
8.2.1 生成大数据集 . 229
8.2.2 抽样 . 230
8.3 用 ScalaCheck 检查属性 232
8.4 集成测试 235
8.5 性能验证 237
8.5.1 用于性能验证的 Spark 计数器 237
8.5.2 性能验证相关项目 238
8.6 作业验证 239
8.7 小结 . 240
第 9 章 Spark MLlib 和ML 241
9.1 在 Spark MLlib 和 Spark ML 之间选择 . 241
9.2 使用 MLlib 242
9.2.1 MLlib 入门(组织和导入) 242
9.2.2 MLlib 特征编码和数据准备 244
9.2.3 特征缩放和选择 248
9.2.4 MLlib 模型训练 . 249
9.2.5 预测 . 250
9.2.6 服务和持久化 . 251
9.2.7 模型评估 254
9.3 使用 Spark ML 254
9.3.1 Spark ML 组织和导入 254
9.3.2 管道阶段 256
9.3.3 参数解释 257
9.3.4 数据编码 258
9.3.5 数据清洗 261
9.3.6 Spark ML 模型 261
9.3.7 整合成管道 262
9.3.8 训练管道 263
9.3.9 访问单个阶段 . 264
9.3.10 数据持久化和 Spark ML . 264
9.3.11 使用自定义算法扩展 Spark ML 管道 267
9.3.12 模型和管道持久化与 Spark ML 服务 275
9.4 一般服务考量因素 276
9.5 小结 . 276
第 10 章 Spark 组件和包 278
10.1 基于 Spark 的流处理 280
10.1.1 Source 和 Sink . 281
10.1.2 批处理间隔 283
10.1.3 数据 checkpoint 间隔 284
10.1.4 DStream 的注意事项 284
10.1.5 Structured Streaming 的考量因素 286
10.1.6 高可用性模式(或处理 Driver 程序故障或进行 checkpoint) 294
10.2 GraphX 295
10.3 使用社区包和库 295
10.4 小结 298
附录 调优、调试以及开发者容易忽略的其他问题 301

展开全部

作者简介

Holden Karau是一位加拿大人,在IBM的Spark技术中心担任软件开发工程师。同时作为一位Spark committer,经常在PySpark和机器学习方面进行贡献。另外曾在多次国际会议中发表关于Spark的演讲。 Rachel Warren是Alpine Data的软件工程师和数据科学家。在工作中,她利用Spark来解决实际场景中的数据处理和机器学习问题。另外,她还曾在工业界以及学术界担任过分析师和导师。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航