书籍详情
剑指大数据:Flink学习精要(Java版)
作者:尚硅谷教育 著
出版社:电子工业出版社
出版时间:2022-02-01
ISBN:9787121429125
定价:¥105.00
购买这本书可以去
内容简介
本书基于Flink的稳定版本1.13,从Flink数据处理思想开始讲解,带领读者深入理解Flink的基本架构,进而由浅入深,结合具体案例,详细剖析了Flink中DataStream API的使用,并对Flink中的时间语义、状态、容错机制等重要概念进行了详尽的阐述。另外,本书还对实际开发中常用的Flink SQL、CEP等高层级API进行了细致的讲解,以电商网站中的实际应用为场景,提供了大量的代码实现。本书分为三大部分:第1~5章,带领读者初步认识Flink并编写基本的Flink程序;第6~10章,深入探讨了Flink内部的高级应用;第11~12章,讲解了Flink提供的扩展功能。本书广泛适用于大数据的学习者与从业人员,以及院校大数据相关专业的学生,也可作为大数据学习的参考书。
作者简介
尚硅谷教育是一家专业的IT教育培训机构,开设了JavaEE、大数据、HTML5前端等多门学科,在互联网上发布的JavaEE、大数据、HTML5前端、区块链、C语言、Python等技术视频教程广受赞誉。
目录
第1章 初识Flink\t1
1.1 Flink的起源和设计理念\t1
1.2 Flink的应用\t3
1.2.1 Flink在企业中的应用\t3
1.2.2 Flink主要的应用场景\t3
1.3 流式数据处理的发展和演变\t4
1.3.1 流处理和批处理\t5
1.3.2 传统事务处理\t6
1.3.3 有状态的流处理\t6
1.3.4 Lambda架构\t9
1.3.5 新一代流处理器\t10
1.4 Flink的特性总结\t10
1.4.1 Flink的核心特性\t10
1.4.2 分层API\t10
1.5 Flink与Spark\t11
1.5.1 数据处理架构\t12
1.5.2 数据模型和运行架构\t13
1.5.3 Spark还是Flink\t13
1.6 本章总结\t14
第2章 Flink快速上手\t15
2.1 环境准备\t15
2.2 创建项目\t15
2.3 编写代码\t18
2.3.1 批处理\t18
2.3.2 流处理\t20
2.4 本章总结\t23
第3章 Flink部署\t25
3.1 快速启动一个Flink集群\t26
3.1.1 环境配置\t26
3.1.2 本地启动\t26
3.1.3 集群启动\t27
3.1.4 向集群提交作业\t29
3.2 部署模式\t32
3.2.1 会话模式\t33
3.2.2 单作业模式\t33
3.2.3 应用模式\t34
3.3 独立模式\t34
3.3.1 会话模式部署\t35
3.3.2 单作业模式部署\t35
3.3.3 应用模式部署\t35
3.3.4 高可用\t35
3.4 YARN模式\t37
3.4.1 相关准备和配置\t37
3.4.2 会话模式部署\t38
3.4.3 单作业模式部署\t39
3.4.4 应用模式部署\t40
3.4.5 高可用\t40
3.5 K8s模式\t41
3.6 本章总结\t41
第4章 Flink运行时架构\t42
4.1 系统架构\t42
4.1.1 整体构成\t42
4.1.2 JobManager\t43
4.1.3 TaskManager\t44
4.2 作业提交流程\t45
4.2.1 高层级抽象视角\t45
4.2.2 独立模式\t45
4.2.3 YARN集群\t46
4.3 一些重要概念\t48
4.3.1 数据流图\t48
4.3.2 并行度\t49
4.3.3 算子链\t51
4.3.4 作业图与执行图\t53
4.3.5 任务和任务槽\t55
4.4 本章总结\t60
第5章 DataStream API(基础篇)\t61
5.1 执行环境\t61
5.1.1 创建执行环境\t62
5.1.2 执行模式\t62
5.1.3 触发程序执行\t64
5.2 源算子\t64
5.2.1 准备工作\t64
5.2.2 从集合中读取数据\t65
5.2.3 从文件中读取数据\t66
5.2.4 从Socket中读取数据\t67
5.2.5 从Kafka中读取数据\t67
5.2.6 自定义源算子\t69
5.2.7 Flink支持的数据类型\t71
5.3 转换算子\t73
5.3.1 基本转换算子\t73
5.3.2 聚合算子\t76
5.3.3 用户自定义函数\t81
5.3.4 物理分区算子\t87
5.4 输出算子\t93
5.4.1 连接到外部系统\t93
5.4.2 输出到文件\t94
5.4.3 输出到Kafka\t96
5.4.4 输出到Redis\t97
5.4.5 输出到ElasticSearch\t99
5.4.6 输出到MySQL(JDBC)\t101
5.4.7 自定义Sink输出\t102
5.5 本章总结\t104
第6章 Flink中的时间和窗口\t105
6.1 时间语义\t105
6.1.1 Flink中的时间语义\t105
6.1.2 哪种时间语义更重要\t107
6.2 水位线\t108
6.2.1 事件时间和窗口\t108
6.2.2 什么是水位线\t110
6.2.3 如何生成水位线\t114
6.2.4 水位线的传递\t120
6.2.5 水位线的总结\t121
6.3 窗口\t122
6.3.1 窗口的概念\t122
6.3.2 窗口的分类\t124
6.3.3 窗口API概览\t128
6.3.4 窗口分配器\t129
6.3.5 窗口函数\t131
6.3.6 测试水位线和窗口的使用\t142
6.3.7 其他API\t144
6.3.8 窗口的生命周期\t148
6.4 迟到数据的处理\t150
6.4.1 设置水位线延迟时间\t150
6.4.2 允许窗口处理迟到数据\t150
6.4.3 将迟到数据放入窗口侧输出流\t151
6.5 本章总结\t154
第7章 处理函数\t155
7.1 基本处理函数\t155
7.1.1 处理函数的功能和使用\t155
7.1.2 ProcessFunction解析\t157
7.1.3 处理函数的分类\t158
7.2 KeyedProcessFunction\t159
7.2.1 定时器和定时服务\t159
7.2.2 KeyedProcessFunction的使用\t160
7.3 窗口处理函数\t164
7.3.1 窗口处理函数的使用\t164
7.3.2 ProcessWindowFunction解析\t164
7.4 应用案例――Top N\t166
7.4.1 使用ProcessAllWindowFunction\t166
7.4.2 使用KeyedProcessFunction\t168
7.5 侧输出流\t173
7.6 本章总结\t174
第8章 多流转换\t175
8.1 分流\t175
8.1.1 简单实现\t175
8.1.2 使用侧输出流\t177
8.2 基本合流操作\t178
8.2.1 联合\t178
8.2.2 连接\t182
8.3 基于时间的合流――双流联结\t188
8.3.1 窗口联结\t188
8.3.2 间隔联结\t192
8.3.3 窗口同组联结\t195
8.4 本章总结\t197
第9章 状态编程\t198
9.1 Flink中的状态\t198
9.1.1 有状态算子\t198
9.1.2 状态的管理\t199
9.1.3 状态的分类\t200
9.2 按键分区状态\t201
9.2.1 基本概念和特点\t201
9.2.2 支持的结构类型\t202
9.2.3 代码实现\t204
9.2.4 状态生存时间\t213
9.3 算子状态\t214
9.3.1 基本概念和特点\t214
9.3.2 状态类型\t215
9.3.3 代码实现\t216
9.4 广播状态\t219
9.4.1 基本用法\t219
9.4.2 代码实例\t220
9.5 状态持久化和状态后端\t223
9.5.1 检查点\t223
9.5.2 状态后端\t224
9.6 本章总结\t226
第10章 容错机制\t227
10.1 检查点\t227
10.1.1 检查点的保存\t228
10.1.2 从检查点恢复状态\t230
10.1.3 检查点算法\t232
10.1.4 检查点配置\t237
10.1.5 保存点\t239
10.2 状态一致性\t240
10.2.1 一致性的概念和级别\t240
10.2.2 端到端的状态一致性\t241
10.3 端到端的精确一次\t241
10.3.1 输入端保证\t242
10.3.2 输出端保证\t242
10.3.3 Flink和Kafka连接时的精确一次保证\t244
10.4 本章总结\t248
第11章 Table API和SQL\t249
11.1 快速上手\t250
11.1.1 需要引入的依赖\t250
11.1.2 一个简单示例\t251
11.2 基本API\t252
11.2.1 程序架构\t252
11.2.2 创建表环境\t253
11.2.3 创建表\t254
11.2.4 表的查询\t255
11.2.5 输出表\t257
11.2.6 表和流的转换\t257
11.3 流处理中的表\t262
11.3.1 动态表和持续查询\t262
11.3.2 将流转换成动态表\t263
11.3.3 用SQL持续查询\t265
11.3.4 将动态表转换为流\t269
11.4 时间属性和窗口\t270
11.4.1 事件时间\t271
11.4.2 处理时间\t272
11.4.3 窗口\t273
11.5 聚合查询\t275
11.5.1 分组聚合\t275
11.5.2 窗口聚合\t276
11.5.3 开窗聚合\t279
11.5.4 应用实例――Top N\t280
11.6 联结查询\t284
11.6.1 常规联结查询\t284
11.6.2 间隔联结查询\t285
11.7 函数\t286
11.7.1 系统函数\t287
11.7.2 自定义函数\t288
11.8 SQL客户端\t294
11.9 连接到外部系统\t296
11.9.1 Kafka\t296
11.9.2 文件系统\t298
11.9.3 JDBC\t299
11.9.4 ElasticSearch\t300
11.9.5 HBase\t300
11.9.6 Hive\t301
11.10 本章总结\t304
第12章 Flink CEP\t306
12.1 基本概念\t306
12.1.1 CEP是什么\t306
12.1.2 模式\t307
12.1.3 应用场景\t307
12.2 快速上手\t308
12.2.1 需要引入的依赖\t308
12.2.2 一个简单实例\t308
12.3 模式API\t311
12.3.1 个体模式\t311
12.3.2 组合模式\t316
12.3.3 模式组\t319
12.3.4 匹配后跳过策略\t320
12.4 模式的检测处理\t321
12.4.1 将模式应用到流上\t321
12.4.2 处理匹配事件\t321
12.4.3 处理超时事件\t324
12.4.4 处理迟到数据\t329
12.5 CEP的状态机实现\t330
12.6 本章总结\t334
1.1 Flink的起源和设计理念\t1
1.2 Flink的应用\t3
1.2.1 Flink在企业中的应用\t3
1.2.2 Flink主要的应用场景\t3
1.3 流式数据处理的发展和演变\t4
1.3.1 流处理和批处理\t5
1.3.2 传统事务处理\t6
1.3.3 有状态的流处理\t6
1.3.4 Lambda架构\t9
1.3.5 新一代流处理器\t10
1.4 Flink的特性总结\t10
1.4.1 Flink的核心特性\t10
1.4.2 分层API\t10
1.5 Flink与Spark\t11
1.5.1 数据处理架构\t12
1.5.2 数据模型和运行架构\t13
1.5.3 Spark还是Flink\t13
1.6 本章总结\t14
第2章 Flink快速上手\t15
2.1 环境准备\t15
2.2 创建项目\t15
2.3 编写代码\t18
2.3.1 批处理\t18
2.3.2 流处理\t20
2.4 本章总结\t23
第3章 Flink部署\t25
3.1 快速启动一个Flink集群\t26
3.1.1 环境配置\t26
3.1.2 本地启动\t26
3.1.3 集群启动\t27
3.1.4 向集群提交作业\t29
3.2 部署模式\t32
3.2.1 会话模式\t33
3.2.2 单作业模式\t33
3.2.3 应用模式\t34
3.3 独立模式\t34
3.3.1 会话模式部署\t35
3.3.2 单作业模式部署\t35
3.3.3 应用模式部署\t35
3.3.4 高可用\t35
3.4 YARN模式\t37
3.4.1 相关准备和配置\t37
3.4.2 会话模式部署\t38
3.4.3 单作业模式部署\t39
3.4.4 应用模式部署\t40
3.4.5 高可用\t40
3.5 K8s模式\t41
3.6 本章总结\t41
第4章 Flink运行时架构\t42
4.1 系统架构\t42
4.1.1 整体构成\t42
4.1.2 JobManager\t43
4.1.3 TaskManager\t44
4.2 作业提交流程\t45
4.2.1 高层级抽象视角\t45
4.2.2 独立模式\t45
4.2.3 YARN集群\t46
4.3 一些重要概念\t48
4.3.1 数据流图\t48
4.3.2 并行度\t49
4.3.3 算子链\t51
4.3.4 作业图与执行图\t53
4.3.5 任务和任务槽\t55
4.4 本章总结\t60
第5章 DataStream API(基础篇)\t61
5.1 执行环境\t61
5.1.1 创建执行环境\t62
5.1.2 执行模式\t62
5.1.3 触发程序执行\t64
5.2 源算子\t64
5.2.1 准备工作\t64
5.2.2 从集合中读取数据\t65
5.2.3 从文件中读取数据\t66
5.2.4 从Socket中读取数据\t67
5.2.5 从Kafka中读取数据\t67
5.2.6 自定义源算子\t69
5.2.7 Flink支持的数据类型\t71
5.3 转换算子\t73
5.3.1 基本转换算子\t73
5.3.2 聚合算子\t76
5.3.3 用户自定义函数\t81
5.3.4 物理分区算子\t87
5.4 输出算子\t93
5.4.1 连接到外部系统\t93
5.4.2 输出到文件\t94
5.4.3 输出到Kafka\t96
5.4.4 输出到Redis\t97
5.4.5 输出到ElasticSearch\t99
5.4.6 输出到MySQL(JDBC)\t101
5.4.7 自定义Sink输出\t102
5.5 本章总结\t104
第6章 Flink中的时间和窗口\t105
6.1 时间语义\t105
6.1.1 Flink中的时间语义\t105
6.1.2 哪种时间语义更重要\t107
6.2 水位线\t108
6.2.1 事件时间和窗口\t108
6.2.2 什么是水位线\t110
6.2.3 如何生成水位线\t114
6.2.4 水位线的传递\t120
6.2.5 水位线的总结\t121
6.3 窗口\t122
6.3.1 窗口的概念\t122
6.3.2 窗口的分类\t124
6.3.3 窗口API概览\t128
6.3.4 窗口分配器\t129
6.3.5 窗口函数\t131
6.3.6 测试水位线和窗口的使用\t142
6.3.7 其他API\t144
6.3.8 窗口的生命周期\t148
6.4 迟到数据的处理\t150
6.4.1 设置水位线延迟时间\t150
6.4.2 允许窗口处理迟到数据\t150
6.4.3 将迟到数据放入窗口侧输出流\t151
6.5 本章总结\t154
第7章 处理函数\t155
7.1 基本处理函数\t155
7.1.1 处理函数的功能和使用\t155
7.1.2 ProcessFunction解析\t157
7.1.3 处理函数的分类\t158
7.2 KeyedProcessFunction\t159
7.2.1 定时器和定时服务\t159
7.2.2 KeyedProcessFunction的使用\t160
7.3 窗口处理函数\t164
7.3.1 窗口处理函数的使用\t164
7.3.2 ProcessWindowFunction解析\t164
7.4 应用案例――Top N\t166
7.4.1 使用ProcessAllWindowFunction\t166
7.4.2 使用KeyedProcessFunction\t168
7.5 侧输出流\t173
7.6 本章总结\t174
第8章 多流转换\t175
8.1 分流\t175
8.1.1 简单实现\t175
8.1.2 使用侧输出流\t177
8.2 基本合流操作\t178
8.2.1 联合\t178
8.2.2 连接\t182
8.3 基于时间的合流――双流联结\t188
8.3.1 窗口联结\t188
8.3.2 间隔联结\t192
8.3.3 窗口同组联结\t195
8.4 本章总结\t197
第9章 状态编程\t198
9.1 Flink中的状态\t198
9.1.1 有状态算子\t198
9.1.2 状态的管理\t199
9.1.3 状态的分类\t200
9.2 按键分区状态\t201
9.2.1 基本概念和特点\t201
9.2.2 支持的结构类型\t202
9.2.3 代码实现\t204
9.2.4 状态生存时间\t213
9.3 算子状态\t214
9.3.1 基本概念和特点\t214
9.3.2 状态类型\t215
9.3.3 代码实现\t216
9.4 广播状态\t219
9.4.1 基本用法\t219
9.4.2 代码实例\t220
9.5 状态持久化和状态后端\t223
9.5.1 检查点\t223
9.5.2 状态后端\t224
9.6 本章总结\t226
第10章 容错机制\t227
10.1 检查点\t227
10.1.1 检查点的保存\t228
10.1.2 从检查点恢复状态\t230
10.1.3 检查点算法\t232
10.1.4 检查点配置\t237
10.1.5 保存点\t239
10.2 状态一致性\t240
10.2.1 一致性的概念和级别\t240
10.2.2 端到端的状态一致性\t241
10.3 端到端的精确一次\t241
10.3.1 输入端保证\t242
10.3.2 输出端保证\t242
10.3.3 Flink和Kafka连接时的精确一次保证\t244
10.4 本章总结\t248
第11章 Table API和SQL\t249
11.1 快速上手\t250
11.1.1 需要引入的依赖\t250
11.1.2 一个简单示例\t251
11.2 基本API\t252
11.2.1 程序架构\t252
11.2.2 创建表环境\t253
11.2.3 创建表\t254
11.2.4 表的查询\t255
11.2.5 输出表\t257
11.2.6 表和流的转换\t257
11.3 流处理中的表\t262
11.3.1 动态表和持续查询\t262
11.3.2 将流转换成动态表\t263
11.3.3 用SQL持续查询\t265
11.3.4 将动态表转换为流\t269
11.4 时间属性和窗口\t270
11.4.1 事件时间\t271
11.4.2 处理时间\t272
11.4.3 窗口\t273
11.5 聚合查询\t275
11.5.1 分组聚合\t275
11.5.2 窗口聚合\t276
11.5.3 开窗聚合\t279
11.5.4 应用实例――Top N\t280
11.6 联结查询\t284
11.6.1 常规联结查询\t284
11.6.2 间隔联结查询\t285
11.7 函数\t286
11.7.1 系统函数\t287
11.7.2 自定义函数\t288
11.8 SQL客户端\t294
11.9 连接到外部系统\t296
11.9.1 Kafka\t296
11.9.2 文件系统\t298
11.9.3 JDBC\t299
11.9.4 ElasticSearch\t300
11.9.5 HBase\t300
11.9.6 Hive\t301
11.10 本章总结\t304
第12章 Flink CEP\t306
12.1 基本概念\t306
12.1.1 CEP是什么\t306
12.1.2 模式\t307
12.1.3 应用场景\t307
12.2 快速上手\t308
12.2.1 需要引入的依赖\t308
12.2.2 一个简单实例\t308
12.3 模式API\t311
12.3.1 个体模式\t311
12.3.2 组合模式\t316
12.3.3 模式组\t319
12.3.4 匹配后跳过策略\t320
12.4 模式的检测处理\t321
12.4.1 将模式应用到流上\t321
12.4.2 处理匹配事件\t321
12.4.3 处理超时事件\t324
12.4.4 处理迟到数据\t329
12.5 CEP的状态机实现\t330
12.6 本章总结\t334
猜您喜欢