书籍详情
Flink原理深入与编程实战:Scala+Java(微课视频版)
作者:辛立伟
出版社:清华大学出版社
出版时间:2023-02-01
ISBN:9787302626947
定价:¥159.00
购买这本书可以去
内容简介
本书讲述Apache Flink大数据框架的原理,以及如果将Apache Flink应用于大数据的实时流处理、批处理、批流一体分析等各个场景。通过原理深入学习和实践示例、案例的学习应用,使读者了解并掌握Apache Flink流处理的框架的基本原理和技能,接近理论与实践的距离。 全书共分为8章,主要内容包括Flink架构与集群安装、Flink开发环境准备(基于IntelliJ IDEA和Maven)、开发Flink实时数据处理程序、Flink流数据分析、时间和水印概念、窗口操作、状态和容错、侧输出流、Flink流连接器、Flink流处理案例、开发Flink批数据处理程序、使用Table API进行数据处理、Flink on YARN、基于Flink构建批流一体数仓、基于Flink和Iceberg数据湖构建实时数仓。本书源码全部在Apache Flink 1.13.2上调试成功,所有示例和案例均提供Scala语言和Java语言两套API的实现(第8章除外),供读者参考。 本书系统讲解了Apache Flink大数据框架的原理和流、批处理的开发实践,内容全面、实例丰富、可操作性强,做到了理论与实践相结合。本书适合大数据学习爱好者、想要入门Apache Flink的读者作为入门和提高的技术参考书,也适合用作大中专院校大数据专业相关的学生和老师的教材或教学参考书。
作者简介
辛立伟,一个在IT领域摸爬滚打20多年的老程序员、技术培训师、技术作者。横跨Java、数据库、大数据开发与分析、人工智能等多个领域,参与多个IT项目的架构设计与开发。长期坚持撰写技术博客,曾在多个大学讲授Java开发、数据库和大数据技术课程,曾担任中国石油大学(青岛校区)等多所院校的外聘讲师。
目录
第1章Flink架构与集群安装(81min)
1.1Flink简介
1.1.1Flink发展历程
1.1.2Flink特性
1.2Flink应用场景
1.2.1事件驱动应用程序
1.2.2数据分析应用程序
1.2.3数据管道应用程序
1.3Flink体系架构
1.3.1Flink系统架构
1.3.2Flink运行时架构
1.3.3Flink资源管理
1.3.4Flink作业调度
1.3.5Flink故障恢复
1.3.6Flink程序执行模式
1.4Flink集群安装
1.4.1Flink独立集群安装和测试
1.4.2Flink完全分布式集群安装
1.4.3Flink常用命令
第2章Flink开发环境准备(37min)
2.1安装和配置
2.1.1安装和配置Maven
2.1.2修改Maven本地仓库默认位置
2.1.3创建初始模板项目
2.1.4构建打包项目
2.2使用IntelliJ IDEA Maven开发Flink项目
2.2.1在IntelliJ IDEA中创建Flink项目
2.2.2设置项目基本依赖
2.2.3用于构建具有依赖项的JAR的模板
2.2.4编写批处理代码并测试执行
2.2.5项目打包并提交Flink集群执行
2.3Flink相关概念
2.3.1Flink数据流
2.3.2Flink分层API
第3章开发Flink实时数据处理程序(376min)
3.1Flink流处理程序编程模型
3.1.1流数据类型
3.1.2流应用程序实现
3.1.3流应用程序剖析
3.2Flink支持的数据源
3.2.1基于Socket的数据源
3.2.2基于文件的数据源
3.2.3基于集合的数据源
3.2.4自定义数据源
3.3Flink数据转换
3.3.1map转换
3.3.2flatMap转换
3.3.3filter转换
3.3.4keyBy转换
3.3.5reduce转换
3.3.6聚合转换
3.3.7union转换
3.3.8connect转换
3.3.9coMap及coFlatMap转换
3.3.10iterate转换
3.3.11project转换
3.4Flink流数据分区
3.4.1流数据分发模式
3.4.2数据分区方法
3.4.3数据分区示例
3.4.4理解操作符链
3.5Flink数据接收器
3.5.1内置数据接收器
3.5.2使用流文件连接器
3.5.3自定义数据接收器
3.6时间和水印概念
3.6.1时间概念
3.6.2事件时间和水印
3.6.3水印策略
3.6.4处理空闲数据源
3.6.5编写水印生成器
3.6.6内置水印生成器
3.6.7分配时间戳和水印示例
3.7窗口操作
3.7.1理解Flink窗口概念
3.7.2窗口分配器
3.7.3窗口函数
3.7.4触发器
3.7.5清除器
3.7.6处理迟到数据
3.7.7处理窗口结果
3.7.8窗口连接
3.8低级操作
3.8.1ProcessFunction
3.8.2KeyedProcessFunction示例
3.8.3案例: 服务器故障检测报警程序
3.9状态和容错
3.9.1状态运算
3.9.2状态的类型
3.9.3使用托管的Keyed State
3.9.4使用托管Operator State
3.9.5广播状态
3.9.6状态后端
3.9.7检查点机制
3.9.8状态快照
3.10侧输出流
3.10.1什么是侧输出流
3.10.2侧输出流应用示例
3.11Flink流连接器
3.11.1Kafka连接器
3.11.2JDBC连接器
3.12其他
3.12.1在应用程序中使用日志
3.12.2使用ParameterTool
3.12.3命名大型TupleX类型
3.13Flink流处理案例
3.13.1处理IoT事件流
3.13.2运输公司车辆超速实时监测
第4章开发Flink批数据处理程序(64min)
4.1Flink批处理程序编程模型
4.1.1批应用程序实现
4.1.2批应用程序剖析
4.2数据源
4.2.1基于文件的数据源
4.2.2基于集合的数据源
4.2.3通用的数据源
4.2.4压缩文件
4.3数据转换
4.3.1map转换
4.3.2flatMap转换
4.3.3mapPartition转换
4.3.4filter转换
4.3.5reduce转换
4.3.6在分组数据集上的reduce转换
4.3.7在分组数据集上的GroupReduce转换
4.3.8在分组数据集上的GroupCombine转换
4.3.9在分组元组数据集上执行聚合
4.3.10在分组元组数据集上执行minBy转换
4.3.11在分组元组数据集上执行maxBy转换
4.3.12在全部元组数据集上执行聚合操作
4.3.13distinct转换
4.3.14join连接转换
4.3.15union转换
4.3.16project转换
4.3.17firstn转换
4.4数据接收器
4.4.1将计算结果保存到文本文件
4.4.2将计算结果保存到JDBC
4.4.3标准DataSink方法
4.4.4本地排序输出
4.5广播变量
4.6分布式缓存
4.7参数传递
4.7.1通过构造函数传参
4.7.2通过withParameters(Configuration)传参
4.7.3通过ExecutionConfig传递全局参数
4.8数据集中的拉链操作
4.8.1密集索引
4.8.2唯一索引
4.9Flink批处理示例
4.9.1分析豆瓣热门电影数据集——Scala实现
4.9.2分析豆瓣热门电影数据集——Java实现
第5章使用Table API进行数据处理(136min)
5.1依赖
5.2Table API与SQL编程模式
5.2.1TableEnvironment
5.2.2Table API与SQL程序的结构
5.2.3在Catalog中创建表
5.2.4查询表
5.2.5向下游发送表
5.2.6翻译并执行查询
5.3Table API
5.3.1关系运算
5.3.2窗口运算
5.3.3基于行的操作
5.4Table API与DataStream API集成
5.4.1依赖
5.4.2在DataStream和Table之间转换
5.4.3处理insertonly流
5.4.4处理变更日志流
5.5Table API实时流处理案例
5.5.1传感器温度实时统计
5.5.2车辆超速实时监测
5.5.3电商用户行为实时分析
第6章Flink on YARN(13min)
6.1Flink on YARN session
6.1.1下载Flink集成Hadoop依赖包
6.1.2运行Flink on YARN session
6.1.3提交Flink作业
6.1.4停止Flink on YARN session
6.2Flink on YARN支持的部署模式
6.2.1Application模式
6.2.2PerJob集群模式
6.2.3session模式
第7章基于Flink构建流批一体数仓(27min)
7.1Flink集成Hive数仓
7.1.1Flink集成Hive的方式
7.1.2Flink集成Hive的步骤
7.1.3Flink连接Hive模板代码
7.2批流一体数仓构建实例
7.2.1数据集说明
7.2.2创建Flink项目
7.2.3创建执行环境
7.2.4注册HiveCatalog
7.2.5创建Kafka流表
7.2.6创建Hive表
7.2.7流写Hive表
7.2.8动态读取Hive流表
7.2.9完整示例代码
7.2.10执行步骤
7.3纯SQL构建批流一体数仓
7.3.1使用Flink SQL客户端
7.3.2集成Flink SQL CLI和Hive
7.3.3注册HiveCatalog
7.3.4使用SQL Client提交作业
7.3.5构建批流一体数仓完整过程
第8章基于Flink和Iceberg数据湖构建实时数仓(23min)
8.1现代数据湖概述
8.1.1什么是数据湖
8.1.2数据湖架构
8.1.3开源数据湖框架
8.2基于Flink Iceberg构建企业数据湖
8.2.1Apache Iceberg的优势
8.2.2Apache Iceberg经典业务场景
8.2.3应用Apache Iceberg的准备工作
8.2.4创建和使用Catalog
8.2.5Iceberg DDL命令
8.2.6Iceberg SQL查询
8.2.7Iceberg SQL写入
8.2.8使用DataStream读取
8.2.9使用DataStream写入
8.2.10重写文件操作
8.2.11未来改进
8.3基于Flink Iceberg构建准实时数仓
8.3.1实时数仓构建
8.3.2执行OLAP联机分析
图书推荐
1.1Flink简介
1.1.1Flink发展历程
1.1.2Flink特性
1.2Flink应用场景
1.2.1事件驱动应用程序
1.2.2数据分析应用程序
1.2.3数据管道应用程序
1.3Flink体系架构
1.3.1Flink系统架构
1.3.2Flink运行时架构
1.3.3Flink资源管理
1.3.4Flink作业调度
1.3.5Flink故障恢复
1.3.6Flink程序执行模式
1.4Flink集群安装
1.4.1Flink独立集群安装和测试
1.4.2Flink完全分布式集群安装
1.4.3Flink常用命令
第2章Flink开发环境准备(37min)
2.1安装和配置
2.1.1安装和配置Maven
2.1.2修改Maven本地仓库默认位置
2.1.3创建初始模板项目
2.1.4构建打包项目
2.2使用IntelliJ IDEA Maven开发Flink项目
2.2.1在IntelliJ IDEA中创建Flink项目
2.2.2设置项目基本依赖
2.2.3用于构建具有依赖项的JAR的模板
2.2.4编写批处理代码并测试执行
2.2.5项目打包并提交Flink集群执行
2.3Flink相关概念
2.3.1Flink数据流
2.3.2Flink分层API
第3章开发Flink实时数据处理程序(376min)
3.1Flink流处理程序编程模型
3.1.1流数据类型
3.1.2流应用程序实现
3.1.3流应用程序剖析
3.2Flink支持的数据源
3.2.1基于Socket的数据源
3.2.2基于文件的数据源
3.2.3基于集合的数据源
3.2.4自定义数据源
3.3Flink数据转换
3.3.1map转换
3.3.2flatMap转换
3.3.3filter转换
3.3.4keyBy转换
3.3.5reduce转换
3.3.6聚合转换
3.3.7union转换
3.3.8connect转换
3.3.9coMap及coFlatMap转换
3.3.10iterate转换
3.3.11project转换
3.4Flink流数据分区
3.4.1流数据分发模式
3.4.2数据分区方法
3.4.3数据分区示例
3.4.4理解操作符链
3.5Flink数据接收器
3.5.1内置数据接收器
3.5.2使用流文件连接器
3.5.3自定义数据接收器
3.6时间和水印概念
3.6.1时间概念
3.6.2事件时间和水印
3.6.3水印策略
3.6.4处理空闲数据源
3.6.5编写水印生成器
3.6.6内置水印生成器
3.6.7分配时间戳和水印示例
3.7窗口操作
3.7.1理解Flink窗口概念
3.7.2窗口分配器
3.7.3窗口函数
3.7.4触发器
3.7.5清除器
3.7.6处理迟到数据
3.7.7处理窗口结果
3.7.8窗口连接
3.8低级操作
3.8.1ProcessFunction
3.8.2KeyedProcessFunction示例
3.8.3案例: 服务器故障检测报警程序
3.9状态和容错
3.9.1状态运算
3.9.2状态的类型
3.9.3使用托管的Keyed State
3.9.4使用托管Operator State
3.9.5广播状态
3.9.6状态后端
3.9.7检查点机制
3.9.8状态快照
3.10侧输出流
3.10.1什么是侧输出流
3.10.2侧输出流应用示例
3.11Flink流连接器
3.11.1Kafka连接器
3.11.2JDBC连接器
3.12其他
3.12.1在应用程序中使用日志
3.12.2使用ParameterTool
3.12.3命名大型TupleX类型
3.13Flink流处理案例
3.13.1处理IoT事件流
3.13.2运输公司车辆超速实时监测
第4章开发Flink批数据处理程序(64min)
4.1Flink批处理程序编程模型
4.1.1批应用程序实现
4.1.2批应用程序剖析
4.2数据源
4.2.1基于文件的数据源
4.2.2基于集合的数据源
4.2.3通用的数据源
4.2.4压缩文件
4.3数据转换
4.3.1map转换
4.3.2flatMap转换
4.3.3mapPartition转换
4.3.4filter转换
4.3.5reduce转换
4.3.6在分组数据集上的reduce转换
4.3.7在分组数据集上的GroupReduce转换
4.3.8在分组数据集上的GroupCombine转换
4.3.9在分组元组数据集上执行聚合
4.3.10在分组元组数据集上执行minBy转换
4.3.11在分组元组数据集上执行maxBy转换
4.3.12在全部元组数据集上执行聚合操作
4.3.13distinct转换
4.3.14join连接转换
4.3.15union转换
4.3.16project转换
4.3.17firstn转换
4.4数据接收器
4.4.1将计算结果保存到文本文件
4.4.2将计算结果保存到JDBC
4.4.3标准DataSink方法
4.4.4本地排序输出
4.5广播变量
4.6分布式缓存
4.7参数传递
4.7.1通过构造函数传参
4.7.2通过withParameters(Configuration)传参
4.7.3通过ExecutionConfig传递全局参数
4.8数据集中的拉链操作
4.8.1密集索引
4.8.2唯一索引
4.9Flink批处理示例
4.9.1分析豆瓣热门电影数据集——Scala实现
4.9.2分析豆瓣热门电影数据集——Java实现
第5章使用Table API进行数据处理(136min)
5.1依赖
5.2Table API与SQL编程模式
5.2.1TableEnvironment
5.2.2Table API与SQL程序的结构
5.2.3在Catalog中创建表
5.2.4查询表
5.2.5向下游发送表
5.2.6翻译并执行查询
5.3Table API
5.3.1关系运算
5.3.2窗口运算
5.3.3基于行的操作
5.4Table API与DataStream API集成
5.4.1依赖
5.4.2在DataStream和Table之间转换
5.4.3处理insertonly流
5.4.4处理变更日志流
5.5Table API实时流处理案例
5.5.1传感器温度实时统计
5.5.2车辆超速实时监测
5.5.3电商用户行为实时分析
第6章Flink on YARN(13min)
6.1Flink on YARN session
6.1.1下载Flink集成Hadoop依赖包
6.1.2运行Flink on YARN session
6.1.3提交Flink作业
6.1.4停止Flink on YARN session
6.2Flink on YARN支持的部署模式
6.2.1Application模式
6.2.2PerJob集群模式
6.2.3session模式
第7章基于Flink构建流批一体数仓(27min)
7.1Flink集成Hive数仓
7.1.1Flink集成Hive的方式
7.1.2Flink集成Hive的步骤
7.1.3Flink连接Hive模板代码
7.2批流一体数仓构建实例
7.2.1数据集说明
7.2.2创建Flink项目
7.2.3创建执行环境
7.2.4注册HiveCatalog
7.2.5创建Kafka流表
7.2.6创建Hive表
7.2.7流写Hive表
7.2.8动态读取Hive流表
7.2.9完整示例代码
7.2.10执行步骤
7.3纯SQL构建批流一体数仓
7.3.1使用Flink SQL客户端
7.3.2集成Flink SQL CLI和Hive
7.3.3注册HiveCatalog
7.3.4使用SQL Client提交作业
7.3.5构建批流一体数仓完整过程
第8章基于Flink和Iceberg数据湖构建实时数仓(23min)
8.1现代数据湖概述
8.1.1什么是数据湖
8.1.2数据湖架构
8.1.3开源数据湖框架
8.2基于Flink Iceberg构建企业数据湖
8.2.1Apache Iceberg的优势
8.2.2Apache Iceberg经典业务场景
8.2.3应用Apache Iceberg的准备工作
8.2.4创建和使用Catalog
8.2.5Iceberg DDL命令
8.2.6Iceberg SQL查询
8.2.7Iceberg SQL写入
8.2.8使用DataStream读取
8.2.9使用DataStream写入
8.2.10重写文件操作
8.2.11未来改进
8.3基于Flink Iceberg构建准实时数仓
8.3.1实时数仓构建
8.3.2执行OLAP联机分析
图书推荐
猜您喜欢