注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络软件与程序设计Flink SQL与DataStream:入门、进阶与实战

Flink SQL与DataStream:入门、进阶与实战

Flink SQL与DataStream:入门、进阶与实战

定 价:¥129.00

作 者: 羊艺超
出版社: 机械工业出版社
丛编项:
标 签: 暂缺

购买这本书可以去


ISBN: 9787111739029 出版时间: 2023-12-01 包装: 平装-胶订
开本: 16开 页数: 字数:  

内容简介

  内容简介这是一本从使用和定制开发双重视角,循序渐进地讲解Flink的分布式系统架构设计、流计算API设计、时间处理、状态管理等核心技术的原理和实现的著作。它面向Flink的初学者,内容沿着基础知识、实际问题和解决方案这条主线展开,不仅层层剖析了Flink学习中的重点和难点,而且还通过大量案例展示了如何快速获得工程化实践能力。全书共11章,主要内容如下:(1)Flink基础知识(第1、2章)主要介绍了Flink的定位、核心特性、API分类,演示了如何搭建Flink作业的基础环境、如何创建一个Flink项目以及如何开发入门应用程序WordCount,并结合该应用程序说明了常见Flink作业的骨架结构。(2)Flink分布式架构及核心概念(第3章)主要内容包括Flink作业的运行时架构、部署模式、资源提供框架,以及开发 Flink作业时涉及的核心概念,对于后续学习Flink DataStream API和Flink SQL API很有帮助。(3)Flink DataStream API(第4~6章)讲解了Flink DataStream API的核心知识,包括执行环境、数据源、数据简单转换、数据分组与聚合、数据汇等,并讲解了Flink DataStream API中的时间语义、时间窗口、有状态计算和检查点这四大“王*牌武器”的由来与实现原理。(4)Flink有状态流处理API(第7章)Flink DataStream API不能优雅地解决窗口使用不灵活和分流成本高这两个问题,于是Flink提供了有状态流处理API。本章主要讲解了Flink有状态流处理API解决上述两个问题的方法。(5)Flink Table API与SQL API(第8~11章)Flink Table API和Flink SQL API的底层原理相同,可以相互转换,但Flink SQL API更为简单和常用。这4章分别介绍了Flink Table API、Flink SQL API 的功能,以及使用SQL实现流处理的核心技术,结合大量代码示例着重介绍了Flink SQL API的语法、函数、参数配置及性能优化方法。

作者简介

  羊艺超资深大数据开发工程师,现就职于某头部短视频公司。拥有多年流式计算开发、优化、保障和治理经验,以及从0到1使用Flink SQL建设实时数仓的经验。对Flink大数据计算引擎有着深入的理解,在Flink的场景化应用方面有丰富的经验,能够使用Flink等技术组件解决千万级别QPS的实时数据场景下的痛点问题。开源了自己的 Flink 学习项目 https://github.com/yangyichao-mango/flink-study。对Redis、Kafka、ClickHouse等实时数仓构建过程中依赖的引擎都较为熟悉。个人微信公众号:大数据羊说。发表了数十篇关于实时数仓建设的原创文章,深受读者喜爱。

图书目录

Contents目  录
前 言
第1章 初识Flink 1
1.1 Flink定位 1
1.1.1 Flink是什么 2
1.1.2 Flink对于数据的定义 3
1.1.3 Flink的3种应用场景 4
1.1.4 Flink的3个企业应用案例 7
1.2 Flink的核心特性 9
1.2.1 Flink的5个核心特性 9
1.2.2 3种流处理引擎特性的对比 10
1.3 Flink的API 11
1.3.1 Code API 11
1.3.2 关系型API 13
1.4 与Flink搭配使用的引擎 15
1.5 本章小结 16
第2章Flink WordCount作业开发
及运行 17
2.1 基础环境准备 17
2.2 创建一个Flink项目 18
2.3 Flink WordCount代码案例 21
2.4 Flink作业的骨架结构 24
2.5 本章小结 25
第3章Flink分布式架构及核心
概念 26
3.1分布式应用与非分布式应用的
异同 27
3.2 Flink作业的运行时架构 28
3.2.1 Flink作业提交部署流程 28
3.2.2 Client 30
3.2.3 JobManager 30
3.2.4 TaskManager 31
3.3 Flink作业的3种部署模式 31
3.3.1 Session模式 32
3.3.2 Per-Job模式 33
3.3.3 Application模式 35
3.4 Flink作业的2种资源提供框架 36
3.4.1 Standalone 36
3.4.2 YARN 40
3.5开发Flink作业时涉及的核心
概念 42
3.5.1 Function 44
3.5.2 Operator 44
3.5.3 算子并行度 46
3.5.4 Operator Chain 49
3.5.5 Task和SubTask 52
3.5.6 Task Slot和共享Task Slot 53
3.5.7 算子最大并行度 54
3.6 Flink Web UI 56
3.6.1 概览模块 57
3.6.2 Flink作业详情 58
3.7 本章小结 64
第4章 Flink DataStream API 65
4.1 什么是DataStream 65
4.2 执行环境 66
4.3 数据源 67
4.3.1从数据源存储引擎中读取数据
的API 67
4.3.2 从Socket中读取数据 69
4.3.3 从Kafka中读取数据 69
4.3.4 从自定义数据源中读取数据 74
4.4 数据简单转换 76
4.4.1 单流的3种数据简单转换 76
4.4.2 多流的4种数据简单转换 80
4.5 数据分组与聚合 84
4.5.1 KeyBy 85
4.5.2 Max、Min和Sum 88
4.5.3 Reduce 92
4.6 数据汇 95
4.6.1向数据汇存储引擎写数据的
API 95
4.6.2 向控制台输出数据 95
4.6.3 向Kafka写入数据 96
4.6.4 向自定义数据汇写入数据 99
4.7 算子间数据传输的8种策略 100
4.7.1 Forward 100
4.7.2 Rebalance 103
4.7.3 Shuff?le 106
4.7.4 KeyGroup 106
4.7.5 Rescale 107
4.7.6 Broadcast 108
4.7.7 Global 110
4.7.8 Custom Partition 110
4.8 数据异步I/O处理 112
4.8.1同步I/O处理导致作业
低吞吐 112
4.8.2同步I/O处理低吞吐的4种
解决方案 113
4.8.3 异步I/O处理原理 113
4.8.4 异步I/O处理API 114
4.8.5异步I/O处理API的注意
事项 117
4.9 RichFunction 118
4.10 数据序列化 121
4.10.1Flink数据序列化机制的
诞生过程 122
4.10.2Flink支持的7种数据
类型 123
4.10.3TypeInformation与
TypeSerializer 125
4.10.4Java Lambda表达式对数据
序列化的影响 127
4.10.5 使用注意事项 129
4.11 工具类及Debug建议 131
4.11.1 ParameterTool 131
4.11.2 Debug建议 132
4.12 本章小结 132
第5章Flink的时间语义和
时间窗口 134
5.1 时间语义和时间窗口概述 134
5.2 时间窗口 137
5.2.1 Flink中的时间窗口 138
5.2.2 为什么需要时间窗口 139
5.2.3时间窗口程序的骨架
结构 141
5.2.4 时间窗口的计算机制 143
5.2.5 窗口分配器 145
5.2.6 窗口处理函数 154
5.2.7 窗口触发器 169
5.3 时间语义 176
5.3.1 处理时间 177
5.3.2 事件时间 178
5.3.3 摄入时间 180
5.4 Watermark 180
5.4.1 Watermark的诞生背景 180
5.4.2 Watermark的定义及特点 185
5.4.3 Watermark的传输策略 187
5.4.4使用Watermark缓解数据
乱序问题 193
5.4.5 生成Watermark的API 196
5.5 双流数据时间窗口关联 204
5.5.1 时间窗口关联 205
5.5.2 时间窗口CoGroup操作 208
5.5.3 时间区间关联 210
5.6 计数窗口 213
5.7生产中的常见问题及解决
方案 215
5.7.1事件时间窗口不触发计算的
3种原因及解决方案 216
5.7.2事件时间窗口数据乱序问题
的体系化解决方案 223
5.7.3windowAll()方法导致数据
倾斜问题的解决方案 230
5.7.4扩展思考?:Watermark是否
只能从时间戳中取值 233
5.8 本章小结 233
第6章Flink状态原理及异常
容错机制 235
6.1 Flink有状态计算 235
6.1.1 状态及有状态计算的定义 235
6.1.2Flink有状态计算的
4类应用 237
6.1.3传统有状态计算方案应用于
大数据场景时存在的
3个问题 237
6.1.4Flink实现有状态计算的
思路 240
6.1.5Flink实现有状态计算面临的
2个难题 248
6.1.6 Flink有状态计算总结 251
6.2 Flink状态接口 252
6.2.1 Flink状态的分类 252
6.2.2 算子状态 257
6.2.3 键值状态 269
6.2.4 广播状态 286
6.2.5 键值状态保留时长 294
6.2.6 F

本目录推荐