书籍详情
Spark原理深入与编程实战(微课视频版)
作者:辛立伟、张帆、张会娟
出版社:清华大学出版社
出版时间:2023-07-01
ISBN:9787302628866
定价:¥189.00
购买这本书可以去
内容简介
本书系统讲述Apache Spark大数据计算平台的原理,以及如果将Apache Spark应用于大数据的实时流处理、批处理、图计算等各个场景。通过原理深入学习和实践示例、案例的学习应用,使读者了解并掌握Apache Spark大数据计算平台的基本原理和技能,接近理论与实践的距离。 全书共分为13章,主要内容包括Spark架构原理与集群搭建、开发和部署Spark应用程序、Spark核心编程、Spark SQL、Spark SQL高级分析、Spark Streaming流处理、Spark结构化流、Spark结构化流高级处理、下一代Spark图处理库GraphFrames、下一代大数据技术(Delta Lake数据湖、Iceberg数据湖和Hudi数据湖)、Spark大数据处理综合案例。本书源码全部在Apache Spark 3.1.2上调试成功,所有示例和案例均基于Scala语言。 为降低读者学习大数据技术的门槛,本书除了提供了丰富的上机实践操作和范例程序详细讲解之外,本书作者还为购买和使用本书的读者提供了搭建好的Hadoop、Hive数仓和Spark大数据开发和学习环境。读者既可以参照本书的讲解自行搭建Hadoop和Spark环境,也可直接使用作者提供的开始和学习环境,快速开始大数据和Spark、数据湖的学习。 本书系统讲解了Apache Spark大数据计算平台的原理和流、批处理的开发实践,内容全面、实例丰富、可操作性强,做到了理论与实践相结合。本书适合大数据学习爱好者、想要入门Apache Spark的读者作为入门和提高的技术参考书,也适合用作大中专院校大数据专业相关的学生和老师的教材或教学参考书。
作者简介
辛立伟,一个在IT领域摸爬滚打二十多年的老程序员、技术培训师、技术作者。横跨Java、数据库、大数据开发与分析、人工智能等多个领域,参与多个IT项目的架构设计与开发。长期坚持撰写技术博客,曾在多个大学讲授Java开发、数据库和大数据技术课程,曾担任中国石油大学(青岛校区)等多所院校的外聘讲师。 张帆,硕士,副教授,中国计算机学会会员,河南省教育厅学术技术带头人,华为认证openGauss数据库工程师。主持参与各级项目19项,发表论文22篇,参编著作5部。研究方向为数据库技术、大数据存储与处理技术、云计算技术。张会娟,博士,华北水利水电大学公共管理学院教师。于2020年在河南理工大学测绘科学与技术系获得工学博士学位。研究兴趣包括地理信息系统、遥感、人工智能等方向,在数据挖掘、深度学习等方面有深入研究,在国内外期刊发表相关论文多篇。
目录
第 1章 Spark架构原理与集群搭建 (
93min) 1
1.1 Spark简介·1
1.2 Spark技术栈·3
1.2.1 Spark Core4
1.2.2 Spark SQL4
1.2.3 Spark Streaming和 Structured Streaming·5
1.2.4 Spark MLlib ·5
1.2.5 Spark GraphX·6
1.2.6 SparkR ·6
1.3 Spark架构原理 ·7
1.3.1 Spark集群和资源管理系统 7
1.3.2 Spark应用程序 7
1.3.3 Spark Driver和 Executor ·9
1.4 Spark程序部署模式10
1.5 安装和配置 Spark集群·11
1.5.1 安装 Spark ·11
1.5.2 了解 Spark目录结构·12
1.5.3 配置 Spark集群·13
1.5.4 验证 Spark安装·14
1.6 配置 Spark历史服务器·15
1.6.1 历史服务器配置 16
1.6.2 启动 Spark历史服务器·17
1.7 使用 spark-shell进行交互式分析 ·18
1.7.1 运行模式 --master·18
1.7.2 启动和退出 spark-shell19
1.7.3 spark-shell常用命令21
1.7.4 SparkContext和 SparkSession ·22
1.7.5 Spark Web UI ·23
1.8 使用 spark-submit提交 Spark应用程序·25
1.8.1 spark-submit指令的各种参数说明·25
1.8.2 提交 SparkPi程序,计算圆周率 π值·29
1.8.3 将 SparkPi程序提交到 YARN集群上执行 30
第 2章 开发和部署 Spark应用程序 (
86min) · 33
2.1 使用 IntelliJ IDEA开发 Spark SBT应用程序33
2.1.1 安装 IntelliJ IDEA ·34
2.1.2 配置 IntelliJ IDEA Scala环境37
2.1.3 创建 IntelliJ IDEA SBT项目·39
2.1.4 配置 SBT构建文件·42
2.1.5 准备数据文件 42
2.1.6 创建 Spark应用程序·43
2.1.7 部署分布式 Spark应用程序 ·47
2.1.8 远程调试 Spark程序·49
2.2 使用 IntelliJ IDEA开发 Spark Maven应用程序 ·51
2.2.1 创建 IntelliJ IDEA Maven项目 ·51
2.2.2 验证 SDK安装和配置 53
2.2.3 项目依赖和配置管理 55
2.2.4 测试 Spark程序·58
2.2.5 项目编译和打包 58
2.3 使用 Java开发 Spark应用程序 59
2.3.1 创建一个新的 IntelliJ项目59
2.3.2 验证 SDK安装和配置 61
2.3.3 安装和配置 Maven 63
2.3.4 创建 Spark应用程序·64
2.3.5 部署 Spark应用程序·66
2.3.6 远程调试 Spark应用程序 ·67
2.4 使用 Zeppelin进行交互式分析 ·69
2.4.1 下载 Zeppelin安装包70
2.4.2 安装和配置 Zeppelin ·70
2.4.3 配置 Spark解释器·71
2.4.4 创建和执行 Notebook程序·72
第 3章 Spark核心编程 (
252min) 75
3.1 理解数据抽象 RDD·75
3.1.1 RDD结构75
3.1.2 RDD容错76
3.2 RDD编程模型 77
3.2.1 单词计数应用程序 77
3.2.2 理解 SparkSession79
3.2.3 理解 SparkContext ·80
3.3 创建 RDD 81
3.3.1 将现有的集合并行化以创建 RDD81
3.3.2 从存储系统读取数据集以创建 RDD82
3.3.3 从已有的 RDD转换得到新的 RDD ·83
3.3.4 创建 RDD时指定分区数量 83
3.4 操作 RDD 84
3.4.1 RDD上的 Transformation和 Action ·85
3.4.2 RDD Transformation操作87
3.4.3 RDD Action操作·92
3.4.4 RDD上的描述性统计操作·95
3.5 Pair RDD96
3.5.1 创建 Pair RDD ·97
3.5.2 操作 Pair RDD ·98
3.5.3 关于 reduceByKey()操作·101
3.5.4 关于 aggregateByKey()操作103
3.5.5 关于 combineByKey()操作106
3.6 持久化 RDD 109
3.6.1 缓存 RDD 109
3.6.2 RDD缓存策略 112
3.6.3 检查点 RDD 113
3.7 RDD数据分区 113
3.7.1 获取和指定 RDD分区数 114
3.7.2 调整 RDD分区数 114
3.7.3 内置数据分区器 116
3.7.4 自定义数据分区器 118
3.7.5 避免不必要的 shuffling ·120
3.7.6 基于数据分区的操作 122
3.8 深入理解 RDD执行过程125
3.8.1 Spark RDD调度过程·125
3.8.2 Spark执行模型 126
3.9 Spark资源管理 ·131
3.9.1 CPU资源分配策略 ·131
3.9.2 Spark内存管理 132
3.10 使用共享变量 134
3.10.1 广播变量 134
3.10.2 累加器139
3.11 Spark RDD编程案例·143
3.11.1 合并小文件 143
3.11.2 二次排序实现 145
3.11.3 Top N实现·146
3.11.4 酒店数据预处理 150
第 4章 Spark SQL (
202min) 154
4.1 Spark SQL数据抽象·155
4.2 Spark SQL架构组成·156
4.3 Spark SQL编程模型·157
4.4 程序入口 SparkSession160
4.5
Spark SQL支持的数据类型162
4.5.1
Spark SQL基本数据类型162
4.5.2
Spark SQL复杂数据类型162
4.5.3
模式·163
4.5.4
列对象和行对象 163
4.6
创建 DataFrame ·164
4.6.1
简单创建单列和多列 DataFrame 165
4.6.2
从 RDD创建 DataFrame ·168
4.6.3
读取外部数据源创建 DataFrame 172
4.7
操作 DataFrame ·191
4.7.1
列的多种引用方式 192
4.7.2
对 DataFrame执行 Transformation转换操作·193
4.7.3
对 DataFrame执行 Action操作205
4.7.4
对 DataFrame执行描述性统计操作 ·206
4.7.5
取 DataFrame Row中特定字段·209
4.7.6
操作 DataFrame示例· 211
4.8
存储 DataFrame ·212
4.8.1
写出 DataFrame ·212
4.8.2
存储模式 215
4.8.3
控制 DataFrame的输出文件数量·216
4.8.4
控制 DataFrame实现分区存储·220
4.9
使用类型化的 DataSet·221
4.9.1
了解 DataSet 221
4.9.2
创建 DataSet 222
4.9.3
操作 DataSet 229
4.9.4
类型安全检查 244
4.9.5
编码器 ·246
4.10
临时视图与 SQL查询·249
4.10.1
在 Spark程序中执行 SQL语句 249
4.10.2
注册临时视图并执行 SQL查询250
4.10.3
使用全局临时视图 252
4.10.4
直接使用数据源注册临时视图 ·254
4.10.5
查看和管理表目录 255
4.11缓存
DataFrame/DataSet 256
4.11.1
缓存方法 256
4.11.2
缓存策略 257
4.11.3
缓存表258
4.12
Spark SQL编程案例·259
4.12.1
实现单词计数 259
4.12.2
用户数据集分析 261
4.12.3
电商用户评论数据集分析 ·264
4.12.4
航空公司航班数据集分析 ·266
4.12.5
数据增量抽取和全量抽取 ·274
第 5章 Spark SQL(高级)(
190min) ·276
5.1 Spark SQL函数·276
5.2 内置标量函数 276
5.2.1 日期时间函数 277
5.2.2 字符串函数 280
5.2.3 数学计算函数 284
5.2.4 集合元素处理函数 285
5.2.5 其他函数 288
5.2.6 函数应用示例 291
5.2.7 Spark 3数组函数·294
5.3 聚合与透视函数 301
5.3.1 聚合函数 301
5.3.2 分组聚合 307
5.3.3 数据透视 311
5.3.4 谓词子查询 312
5.4 高级分析函数 313
5.4.1 使用多维聚合函数 313
5.4.2 使用时间窗口聚合 316
5.4.3 使用窗口分析函数 321
5.5 用户自定义函数( UDF)·330
5.6 数据集的 join连接332
5.6.1 join表达式和 join类型·332
5.6.2 执行 join连接333
5.6.3 处理重复列名 340
5.6.4 join连接策略·342
5.7 读写 Hive表344
5.7.1 Spark SQL的 Hive配置345
5.7.2 Spark Maven项目的 Hive配置·346
5.7.3 Spark SQL读写 Hive表347
5.7.4 分桶、分区和排序 352
5.8 查询优化器 Catalyst 359
5.8.1 窄转换和宽转换 360
5.8.2 Spark执行模型 361
5.8.3 Catalyst实践363
5.8.4 可视化 Spark程序执行·366
5.9 项目 Tungsten372
5.10 Spark性能调优373
5.11 Spark SQL编程案例 ·375
5.11.1 电影数据集分析 375
5.11.2 电商数据集分析 379
5.12 Spark SQL分析案例·387
5.12.1 用户行为数据集说明 ·387
5.12.2 分析需求说明 388
5.12.3 数据探索和预处理 390
5.12.4 平台流量分析 394
5.12.5 用户行为分析 397
5.12.6 转化漏斗分析 405
5.12.7 用户 RFM价值分析408
5.12.8 推荐效果分析 412
5.12.9 项目分析总结 417
第 6章 Spark Streaming流处理 (
73min)·418
6.1 Spark DStream ·418
6.2 Spark流处理示例419
6.2.1 Spark Streaming编程模型·420
6.2.2 实时股票交易分析 423
6.2.3 使用外部数据源 Kafka440
第 7章 Spark结构化流 (
162min)·446
7.1 结构化流简介 446
7.2 结构化流编程模型 448
7.3 结构化流核心概念 451
7.3.1 数据源 ·451
7.3.2 输出模式 452
7.3.3 触发器类型 452
7.3.4 数据接收器 453
7.3.5 水印·454
7.4 使用各种流数据源 454
7.4.1 使用 Socket数据源·454
7.4.2 使用 Rate数据源·456
7.4.3 使用 File数据源458
7.4.4 使用 Kafka数据源 461
7.5 流 DataFrame操作467
7.5.1 选择、投影和聚合操作 468
7.5.2 执行 join连接操作471
7.6 使用数据接收器 474
7.6.1 使用 File Data Sink 474
7.6.2 使用 Kafka Data Sink·475
7.6.3 使用 Foreach Data Sink478
7.6.4 使用 Console Data Sink ·480
7.6.5 使用 Memory Data Sink·482
7.6.6 Data Sink与输出模式 ·483
7.7 深入研究输出模式 483
7.7.1 无状态流查询 483
7.7.2 有状态流查询 484
7.8 深入研究触发器 489
7.8.1 固定间隔触发器 490
7.8.2 一次性的触发器 492
7.8.3 连续性的触发器 492
第 8章 Spark结构化流(高级)(
72min)·496
8.1 事件时间和窗口聚合 496
8.1.1 固定窗口聚合 496
8.1.2 滑动窗口聚合 500
8.2 水印·504
8.2.1 限制维护的聚合状态数量 ·504
8.2.2 处理迟到的数据 507
8.3 任意状态处理 512
8.3.1 结构化流的任意状态处理 ·513
8.3.2 处理状态超时 514
8.3.3 任意状态处理实战 515
8.4 处理重复数据 524
8.5 容错·526
8.6 流查询度量指标和容错 528
8.6.1 流查询指标 528
8.6.2 流监控指标 530
8.7 结构化流案例:运输公司车辆超速实时监测 531
8.8 结构化流案例:实时订单分析 ·536
8.8.1 数据集说明和数据源 537
8.8.2 计算每 10s的销售和购买订单数量 538
8.8.3 根据购买或售出的总金额统计前 5个客户541
8.8.4 找出过去一小时内前 5个交易量昀多的股票543
第 9章 Spark图处理库 GraphFrame (
80min)546
9.1 图基本概念 546
9.2 GraphFrame图处理库简介 ·548
9.3 GraphFrame的基本使用·549
9.3.1 添加 GraphFrame依赖549
9.3.2 构造图模型 550
9.3.3 简单图查询 551
9.3.4 示例:简单航班数据分析 ·556
9.4 应用 motif模式查询 ·559
9.4.1 简单 motif查询·560
9.4.2 状态查询 562
9.5 构建子图 ·563
9.6 内置图算法 565
9.6.1 广度优先搜索( BFS)算法 565
9.6.2 连通分量算法 567
9.6.3 强连通分量算法 568
9.6.4 标签传播算法 569
9.6.5 PageRank算法·570
9.6.6 昀短路径算法 573
9.6.7 三角计数算法 574
9.7 保存和加载 GraphFrame ·575
9.8 深入理解 GraphFrame ·576
9.9 案例:亚马逊产品联购分析 ·578
9.9.1 基本图查询和操作 579
9.9.2 联购商品分析 580
9.9.3 处理子图 584
9.9.4 应用图算法进行分析 584
第 10章 Delta Lake数据湖 (
61min) 586
10.1 从数据仓库到数据湖 586
10.2 解耦存储层和分析层 588
10.3 Delta Lake介绍·591
10.4 Delta Lake架构·593
10.5 Delta Lake使用·595
10.5.1 安装 Delta Lake595
10.5.2 表批处理读写 596
10.5.3 表流处理读写 602
10.5.4 文件移除 605
10.5.5 压缩小文件 612
10.5.6 增量更新与时间旅行 ·615
10.5.7 合并更新( upsert)·621
第 11章 Iceberg数据湖 (
90min) 630
11.1 Apache Iceberg简介630
11.2配置和使用 Catalog·631
11.2.1 配置 Catalog·632
11.2.2 使用 Catalog·633
11.2.3 替换 Session Catalog 633
11.2.4 运行时配置 634
11.3管理 Catalog中的数据库635
11.4管理 Iceberg表635
11.4.1 基本的 CRUD操作635
11.4.2 创建和删除表 640
11.4.3 使用分区表和分桶表 ·642
11.4.4 数据覆盖 652
11.4.5 修改表结构 654
11.5探索 Iceberg表663
11.5.1 History历史表·663
11.5.2 Snapshots快照表·664
11.5.3 Files数据文件表664
11.5.4 Manifests文件清单表665
11.6 Apache Iceberg架构666
11.6.1 Iceberg Catalog·666
11.6.2 元数据文件 667
11.6.3 清单列表( Manifest List)670
11.6.4 清单文件( Manifest File)673
11.7 CRUD操作的底层实现 676
11.8增量更新与合并更新 679
11.9时间旅行685
11.10 隐藏分区和分区演变 688
11.10.1 分区概念 ·688
11.10.2 分区演变示例 ·691
11.11 使用存储过程维护表·698
11.12 整合 Spark结构化流·701
11.12.1 流读取 ·701
11.12.2 流写入 ·701
11.12.3 维护流表 ·704
第 12章 Hudi数据湖 (
19min) 707
12.1 Apache Hudi特性707
12.1.1 Hudi Timeline·707
12.1.2 Hudi文件布局 ·709
12.1.3 Hudi表类型 ·709
12.1.4 Hudi查询类型 ·712
12.2 在 Spark 3中使用 Hudi ·713
12.2.1 配置 Hudi·713
12.2.2 初始设置 714
12.2.3 插入数据 715
12.2.4 查询数据 716
12.2.5 更新数据 718
12.2.6 增量查询 718
12.2.7 时间点查询 720
12.2.8 删除数据 720
12.2.9 插入覆盖 722
第 13章 Spark大数据处理综合案例 (
15min) ·724
13.1 项目需求说明 724
13.2 项目架构设计 725
13.3 项目实现:数据采集 726
13.4 项目实现:数据集成 729
13.4.1 Flume简介·729
13.4.2 安装和配置 Flume ·730
13.4.3 实现数据集成 731
13.5 项目实现:数据 ETL732
13.6 项目实现:数据清洗与整理 ·735
13.7 项目实现:数据分析 739
13.8 项目实现:分析结果导出 ·747
13.9 项目实现:数据可视化 748
13.9.1 Spring MVC框架简介·749
13.9.2 ECharts图表库介绍·750
13.9.3 Spring MVC Web程序开发 ·751
13.9.4 前端 ECharts组件开发763
13.10 项目部署和测试 768
93min) 1
1.1 Spark简介·1
1.2 Spark技术栈·3
1.2.1 Spark Core4
1.2.2 Spark SQL4
1.2.3 Spark Streaming和 Structured Streaming·5
1.2.4 Spark MLlib ·5
1.2.5 Spark GraphX·6
1.2.6 SparkR ·6
1.3 Spark架构原理 ·7
1.3.1 Spark集群和资源管理系统 7
1.3.2 Spark应用程序 7
1.3.3 Spark Driver和 Executor ·9
1.4 Spark程序部署模式10
1.5 安装和配置 Spark集群·11
1.5.1 安装 Spark ·11
1.5.2 了解 Spark目录结构·12
1.5.3 配置 Spark集群·13
1.5.4 验证 Spark安装·14
1.6 配置 Spark历史服务器·15
1.6.1 历史服务器配置 16
1.6.2 启动 Spark历史服务器·17
1.7 使用 spark-shell进行交互式分析 ·18
1.7.1 运行模式 --master·18
1.7.2 启动和退出 spark-shell19
1.7.3 spark-shell常用命令21
1.7.4 SparkContext和 SparkSession ·22
1.7.5 Spark Web UI ·23
1.8 使用 spark-submit提交 Spark应用程序·25
1.8.1 spark-submit指令的各种参数说明·25
1.8.2 提交 SparkPi程序,计算圆周率 π值·29
1.8.3 将 SparkPi程序提交到 YARN集群上执行 30
第 2章 开发和部署 Spark应用程序 (
86min) · 33
2.1 使用 IntelliJ IDEA开发 Spark SBT应用程序33
2.1.1 安装 IntelliJ IDEA ·34
2.1.2 配置 IntelliJ IDEA Scala环境37
2.1.3 创建 IntelliJ IDEA SBT项目·39
2.1.4 配置 SBT构建文件·42
2.1.5 准备数据文件 42
2.1.6 创建 Spark应用程序·43
2.1.7 部署分布式 Spark应用程序 ·47
2.1.8 远程调试 Spark程序·49
2.2 使用 IntelliJ IDEA开发 Spark Maven应用程序 ·51
2.2.1 创建 IntelliJ IDEA Maven项目 ·51
2.2.2 验证 SDK安装和配置 53
2.2.3 项目依赖和配置管理 55
2.2.4 测试 Spark程序·58
2.2.5 项目编译和打包 58
2.3 使用 Java开发 Spark应用程序 59
2.3.1 创建一个新的 IntelliJ项目59
2.3.2 验证 SDK安装和配置 61
2.3.3 安装和配置 Maven 63
2.3.4 创建 Spark应用程序·64
2.3.5 部署 Spark应用程序·66
2.3.6 远程调试 Spark应用程序 ·67
2.4 使用 Zeppelin进行交互式分析 ·69
2.4.1 下载 Zeppelin安装包70
2.4.2 安装和配置 Zeppelin ·70
2.4.3 配置 Spark解释器·71
2.4.4 创建和执行 Notebook程序·72
第 3章 Spark核心编程 (
252min) 75
3.1 理解数据抽象 RDD·75
3.1.1 RDD结构75
3.1.2 RDD容错76
3.2 RDD编程模型 77
3.2.1 单词计数应用程序 77
3.2.2 理解 SparkSession79
3.2.3 理解 SparkContext ·80
3.3 创建 RDD 81
3.3.1 将现有的集合并行化以创建 RDD81
3.3.2 从存储系统读取数据集以创建 RDD82
3.3.3 从已有的 RDD转换得到新的 RDD ·83
3.3.4 创建 RDD时指定分区数量 83
3.4 操作 RDD 84
3.4.1 RDD上的 Transformation和 Action ·85
3.4.2 RDD Transformation操作87
3.4.3 RDD Action操作·92
3.4.4 RDD上的描述性统计操作·95
3.5 Pair RDD96
3.5.1 创建 Pair RDD ·97
3.5.2 操作 Pair RDD ·98
3.5.3 关于 reduceByKey()操作·101
3.5.4 关于 aggregateByKey()操作103
3.5.5 关于 combineByKey()操作106
3.6 持久化 RDD 109
3.6.1 缓存 RDD 109
3.6.2 RDD缓存策略 112
3.6.3 检查点 RDD 113
3.7 RDD数据分区 113
3.7.1 获取和指定 RDD分区数 114
3.7.2 调整 RDD分区数 114
3.7.3 内置数据分区器 116
3.7.4 自定义数据分区器 118
3.7.5 避免不必要的 shuffling ·120
3.7.6 基于数据分区的操作 122
3.8 深入理解 RDD执行过程125
3.8.1 Spark RDD调度过程·125
3.8.2 Spark执行模型 126
3.9 Spark资源管理 ·131
3.9.1 CPU资源分配策略 ·131
3.9.2 Spark内存管理 132
3.10 使用共享变量 134
3.10.1 广播变量 134
3.10.2 累加器139
3.11 Spark RDD编程案例·143
3.11.1 合并小文件 143
3.11.2 二次排序实现 145
3.11.3 Top N实现·146
3.11.4 酒店数据预处理 150
第 4章 Spark SQL (
202min) 154
4.1 Spark SQL数据抽象·155
4.2 Spark SQL架构组成·156
4.3 Spark SQL编程模型·157
4.4 程序入口 SparkSession160
4.5
Spark SQL支持的数据类型162
4.5.1
Spark SQL基本数据类型162
4.5.2
Spark SQL复杂数据类型162
4.5.3
模式·163
4.5.4
列对象和行对象 163
4.6
创建 DataFrame ·164
4.6.1
简单创建单列和多列 DataFrame 165
4.6.2
从 RDD创建 DataFrame ·168
4.6.3
读取外部数据源创建 DataFrame 172
4.7
操作 DataFrame ·191
4.7.1
列的多种引用方式 192
4.7.2
对 DataFrame执行 Transformation转换操作·193
4.7.3
对 DataFrame执行 Action操作205
4.7.4
对 DataFrame执行描述性统计操作 ·206
4.7.5
取 DataFrame Row中特定字段·209
4.7.6
操作 DataFrame示例· 211
4.8
存储 DataFrame ·212
4.8.1
写出 DataFrame ·212
4.8.2
存储模式 215
4.8.3
控制 DataFrame的输出文件数量·216
4.8.4
控制 DataFrame实现分区存储·220
4.9
使用类型化的 DataSet·221
4.9.1
了解 DataSet 221
4.9.2
创建 DataSet 222
4.9.3
操作 DataSet 229
4.9.4
类型安全检查 244
4.9.5
编码器 ·246
4.10
临时视图与 SQL查询·249
4.10.1
在 Spark程序中执行 SQL语句 249
4.10.2
注册临时视图并执行 SQL查询250
4.10.3
使用全局临时视图 252
4.10.4
直接使用数据源注册临时视图 ·254
4.10.5
查看和管理表目录 255
4.11缓存
DataFrame/DataSet 256
4.11.1
缓存方法 256
4.11.2
缓存策略 257
4.11.3
缓存表258
4.12
Spark SQL编程案例·259
4.12.1
实现单词计数 259
4.12.2
用户数据集分析 261
4.12.3
电商用户评论数据集分析 ·264
4.12.4
航空公司航班数据集分析 ·266
4.12.5
数据增量抽取和全量抽取 ·274
第 5章 Spark SQL(高级)(
190min) ·276
5.1 Spark SQL函数·276
5.2 内置标量函数 276
5.2.1 日期时间函数 277
5.2.2 字符串函数 280
5.2.3 数学计算函数 284
5.2.4 集合元素处理函数 285
5.2.5 其他函数 288
5.2.6 函数应用示例 291
5.2.7 Spark 3数组函数·294
5.3 聚合与透视函数 301
5.3.1 聚合函数 301
5.3.2 分组聚合 307
5.3.3 数据透视 311
5.3.4 谓词子查询 312
5.4 高级分析函数 313
5.4.1 使用多维聚合函数 313
5.4.2 使用时间窗口聚合 316
5.4.3 使用窗口分析函数 321
5.5 用户自定义函数( UDF)·330
5.6 数据集的 join连接332
5.6.1 join表达式和 join类型·332
5.6.2 执行 join连接333
5.6.3 处理重复列名 340
5.6.4 join连接策略·342
5.7 读写 Hive表344
5.7.1 Spark SQL的 Hive配置345
5.7.2 Spark Maven项目的 Hive配置·346
5.7.3 Spark SQL读写 Hive表347
5.7.4 分桶、分区和排序 352
5.8 查询优化器 Catalyst 359
5.8.1 窄转换和宽转换 360
5.8.2 Spark执行模型 361
5.8.3 Catalyst实践363
5.8.4 可视化 Spark程序执行·366
5.9 项目 Tungsten372
5.10 Spark性能调优373
5.11 Spark SQL编程案例 ·375
5.11.1 电影数据集分析 375
5.11.2 电商数据集分析 379
5.12 Spark SQL分析案例·387
5.12.1 用户行为数据集说明 ·387
5.12.2 分析需求说明 388
5.12.3 数据探索和预处理 390
5.12.4 平台流量分析 394
5.12.5 用户行为分析 397
5.12.6 转化漏斗分析 405
5.12.7 用户 RFM价值分析408
5.12.8 推荐效果分析 412
5.12.9 项目分析总结 417
第 6章 Spark Streaming流处理 (
73min)·418
6.1 Spark DStream ·418
6.2 Spark流处理示例419
6.2.1 Spark Streaming编程模型·420
6.2.2 实时股票交易分析 423
6.2.3 使用外部数据源 Kafka440
第 7章 Spark结构化流 (
162min)·446
7.1 结构化流简介 446
7.2 结构化流编程模型 448
7.3 结构化流核心概念 451
7.3.1 数据源 ·451
7.3.2 输出模式 452
7.3.3 触发器类型 452
7.3.4 数据接收器 453
7.3.5 水印·454
7.4 使用各种流数据源 454
7.4.1 使用 Socket数据源·454
7.4.2 使用 Rate数据源·456
7.4.3 使用 File数据源458
7.4.4 使用 Kafka数据源 461
7.5 流 DataFrame操作467
7.5.1 选择、投影和聚合操作 468
7.5.2 执行 join连接操作471
7.6 使用数据接收器 474
7.6.1 使用 File Data Sink 474
7.6.2 使用 Kafka Data Sink·475
7.6.3 使用 Foreach Data Sink478
7.6.4 使用 Console Data Sink ·480
7.6.5 使用 Memory Data Sink·482
7.6.6 Data Sink与输出模式 ·483
7.7 深入研究输出模式 483
7.7.1 无状态流查询 483
7.7.2 有状态流查询 484
7.8 深入研究触发器 489
7.8.1 固定间隔触发器 490
7.8.2 一次性的触发器 492
7.8.3 连续性的触发器 492
第 8章 Spark结构化流(高级)(
72min)·496
8.1 事件时间和窗口聚合 496
8.1.1 固定窗口聚合 496
8.1.2 滑动窗口聚合 500
8.2 水印·504
8.2.1 限制维护的聚合状态数量 ·504
8.2.2 处理迟到的数据 507
8.3 任意状态处理 512
8.3.1 结构化流的任意状态处理 ·513
8.3.2 处理状态超时 514
8.3.3 任意状态处理实战 515
8.4 处理重复数据 524
8.5 容错·526
8.6 流查询度量指标和容错 528
8.6.1 流查询指标 528
8.6.2 流监控指标 530
8.7 结构化流案例:运输公司车辆超速实时监测 531
8.8 结构化流案例:实时订单分析 ·536
8.8.1 数据集说明和数据源 537
8.8.2 计算每 10s的销售和购买订单数量 538
8.8.3 根据购买或售出的总金额统计前 5个客户541
8.8.4 找出过去一小时内前 5个交易量昀多的股票543
第 9章 Spark图处理库 GraphFrame (
80min)546
9.1 图基本概念 546
9.2 GraphFrame图处理库简介 ·548
9.3 GraphFrame的基本使用·549
9.3.1 添加 GraphFrame依赖549
9.3.2 构造图模型 550
9.3.3 简单图查询 551
9.3.4 示例:简单航班数据分析 ·556
9.4 应用 motif模式查询 ·559
9.4.1 简单 motif查询·560
9.4.2 状态查询 562
9.5 构建子图 ·563
9.6 内置图算法 565
9.6.1 广度优先搜索( BFS)算法 565
9.6.2 连通分量算法 567
9.6.3 强连通分量算法 568
9.6.4 标签传播算法 569
9.6.5 PageRank算法·570
9.6.6 昀短路径算法 573
9.6.7 三角计数算法 574
9.7 保存和加载 GraphFrame ·575
9.8 深入理解 GraphFrame ·576
9.9 案例:亚马逊产品联购分析 ·578
9.9.1 基本图查询和操作 579
9.9.2 联购商品分析 580
9.9.3 处理子图 584
9.9.4 应用图算法进行分析 584
第 10章 Delta Lake数据湖 (
61min) 586
10.1 从数据仓库到数据湖 586
10.2 解耦存储层和分析层 588
10.3 Delta Lake介绍·591
10.4 Delta Lake架构·593
10.5 Delta Lake使用·595
10.5.1 安装 Delta Lake595
10.5.2 表批处理读写 596
10.5.3 表流处理读写 602
10.5.4 文件移除 605
10.5.5 压缩小文件 612
10.5.6 增量更新与时间旅行 ·615
10.5.7 合并更新( upsert)·621
第 11章 Iceberg数据湖 (
90min) 630
11.1 Apache Iceberg简介630
11.2配置和使用 Catalog·631
11.2.1 配置 Catalog·632
11.2.2 使用 Catalog·633
11.2.3 替换 Session Catalog 633
11.2.4 运行时配置 634
11.3管理 Catalog中的数据库635
11.4管理 Iceberg表635
11.4.1 基本的 CRUD操作635
11.4.2 创建和删除表 640
11.4.3 使用分区表和分桶表 ·642
11.4.4 数据覆盖 652
11.4.5 修改表结构 654
11.5探索 Iceberg表663
11.5.1 History历史表·663
11.5.2 Snapshots快照表·664
11.5.3 Files数据文件表664
11.5.4 Manifests文件清单表665
11.6 Apache Iceberg架构666
11.6.1 Iceberg Catalog·666
11.6.2 元数据文件 667
11.6.3 清单列表( Manifest List)670
11.6.4 清单文件( Manifest File)673
11.7 CRUD操作的底层实现 676
11.8增量更新与合并更新 679
11.9时间旅行685
11.10 隐藏分区和分区演变 688
11.10.1 分区概念 ·688
11.10.2 分区演变示例 ·691
11.11 使用存储过程维护表·698
11.12 整合 Spark结构化流·701
11.12.1 流读取 ·701
11.12.2 流写入 ·701
11.12.3 维护流表 ·704
第 12章 Hudi数据湖 (
19min) 707
12.1 Apache Hudi特性707
12.1.1 Hudi Timeline·707
12.1.2 Hudi文件布局 ·709
12.1.3 Hudi表类型 ·709
12.1.4 Hudi查询类型 ·712
12.2 在 Spark 3中使用 Hudi ·713
12.2.1 配置 Hudi·713
12.2.2 初始设置 714
12.2.3 插入数据 715
12.2.4 查询数据 716
12.2.5 更新数据 718
12.2.6 增量查询 718
12.2.7 时间点查询 720
12.2.8 删除数据 720
12.2.9 插入覆盖 722
第 13章 Spark大数据处理综合案例 (
15min) ·724
13.1 项目需求说明 724
13.2 项目架构设计 725
13.3 项目实现:数据采集 726
13.4 项目实现:数据集成 729
13.4.1 Flume简介·729
13.4.2 安装和配置 Flume ·730
13.4.3 实现数据集成 731
13.5 项目实现:数据 ETL732
13.6 项目实现:数据清洗与整理 ·735
13.7 项目实现:数据分析 739
13.8 项目实现:分析结果导出 ·747
13.9 项目实现:数据可视化 748
13.9.1 Spring MVC框架简介·749
13.9.2 ECharts图表库介绍·750
13.9.3 Spring MVC Web程序开发 ·751
13.9.4 前端 ECharts组件开发763
13.10 项目部署和测试 768
猜您喜欢