- 1.1 Apache Flink简介
- 1.1.1 Apache Flink是什么
- 1.1.2 Apache Flink应用场景
- 1.2 Apache Flink组件
- 1.2.1 分层API 6
- 1.2.2 作业管理器、任务管理器、客户端
- 2.1 本地模式
- 2.2 Standalone模式
- 2.3 YARN模式
- 2.4 Flink集群高可用
- 3.1 基础概念 34
- 3.1.1 数据集和数据流 34
- 3.1.2 Flink程序的组成 35
- 3.1.3 延迟计算 37
- 3.1.4 指定分组数据集合的键 37
- 3.1.5 指定转换函数 40
- 3.1.6 支持的数据类型 41
- 3.2 Flink程序模型 45
- 3.2.1 程序和数据流 45
- 3.2.2 并行数据流 46
- 3.2.3 窗口 47
- 3.2.4 时间 48
- 3.2.5 有状态计算 49
- 3.2.6 容错检查点 49
- 3.2.7 状态后端 50
- 3.2.8 保存点 51
- 3.3 Flink程序的分布式执行模型 51
- 3.3.1 任务和任务链 51
- 3.2.2 任务槽和资源 52
- 3.4 Java的Lambda表达式 54
- 3.4.1 类型擦除 55
- 3.4.2 类型提示 56
- 4.1 DataStream的基本概念 58
- 4.1.1 流处理示例程序 58
- 4.1.2 数据源 62
- 4.1.3 数据流的转换操作 67
- 4.1.4 数据接收器 67
- 4.2 数据流基本操作 70
- 4.2.1 Map 70
- 4.2.2 FlatMap 71
- 4.2.3 Filter 73
- 4.2.4 KeyBy 74
- 4.2.5 Reduce 75
- 4.2.6 Aggregations 77
- 4.2.7 Split和Select 79
- 4.2.8 Project 81
- 4.2.9 Union 82
- 4.2.10 Connect和CoMap、CoFlatMap 83
- 4.2.11 Iterate 86
- 4.3 富函数 89
- 4.3.1 基本概念 89
- 4.3.2 代码演示 90
- 4.4 任务链和资源组 92
- 4.4.1 默认链接 93
- 4.4.2 开启新链接 96
- 4.4.3 禁用链接 98
- 4.4.4 设置任务槽共享组 101
- 4.5 物理分区 102
- 4.5.1 自定义分区策略 103
- 4.5.2 shuffle分区策略 108
- 4.5.3 broadcast分区策略 110
- 4.5.4 rebalance分区策略 111
- 4.5.5 rescale分区策略 115
- 4.5.6 forward分区策略 118
- 4.5.7 global分区策略 120
- 4.6 流处理的本地测试 121
- 4.6.1 本地执行环境 121
- 4.6.2 集合支持的数据源和数据接收器 122
- 4.6.3 单元测试 123
- 4.6.4 集成测试 123
- 4.7 分布式缓存 125
- 4.7.1 注册分布式缓存文件 125
- 4.7.2 访问分布式缓存文件 126
- 4.7.3 BLOB服务的配置参数 128
- 4.7.4 部署到集群中运行 131
- 4.8 将参数传递给函数 133
- 4.8.1 通过构造函数传递参数 133
- 4.8.2 使用ExecutionConfig传递参数 135
- 4.8.3 将命令行参数传递给函数 137
- 5.1 有状态计算 140
- 5.1.1 Operator状态和Keyed状态 141
- 5.1.2 托管的Keyed状态 142
- 5.1.3 托管的Operator状态 157
- 5.2 检查点机制 168
- 5.2.1 先决条件 168
- 5.2.2 启用和配置检查点机制 168
- 5.2.3 目录结构 170
- 5.2.4 其他相关的配置选项 170
- 5.3 状态后端 171
- 5.3.1 MemoryStateBackend 172
- 5.3.2 FsStateBackend 173
- 5.3.3 RocksDBStateBackend 174
- 5.3.4 配置状态后端 175
- 5.4 保存点机制 176
- 5.4.1 分配操作符id 177
- 5.4.2 保存点映射 177
- 5.4.3 保存点操作 177
- 5.4.4 保存点配置 182
- 5.5 广播状态 183
- 5.5.1 前置条件 183
- 5.5.2 广播函数 185
- 5.5.3 代码实现 189
- 5.6 调优检查点和大状态 192
- 5.6.1 监视状态和检查点 192
- 5.6.2 调优检查点 192
- 5.6.3 使用异步检查点操作 193
- 5.6.4 调优RocksDB 194
- 5.6.5 容量规划 196
- 5.6.6 压缩 197
- 6.1 窗口 198
- 6.1.1 窗口的基本概念 198
- 6.1.2 窗口分配器 201
- 6.1.3 窗口函数 211
- 6.1.4 窗口触发器 224
- 6.1.5 窗口剔除器 230
- 6.1.6 允许数据延迟 234
- 6.1.7 窗口的快速实现方法 236
- 6.1.8 查看窗口使用组件 237
- 6.2 时间 239
- 6.2.1 时间语义 240
- 6.2.2 事件时间与水印 241
- 6.2.3 设置时间特性 243
- 6.3 数据流的连接操作 255
- 6.3.1 窗口Join 255
- 6.3.2 窗口CoGroup 262
- 6.3.3 间隔Join 265
- 6.4 侧端输出 267
- 6.4.1 基于复制数据流的方案 267
- 6.4.2 基于Split和Select的方案 268
- 6.4.3 基于侧端输出的方案 270
- 6.5 ProcessFunction 273
- 6.5.1 基本概念 273
- 6.5.2 计时器 278
- 6.6 自定义数据源函数 279
- 6.6.1 SourceFunction接口 279
- 6.6.2 ParallelSourceFunction接口 283
- 6.6.3 RichParallelSourceFunction抽象类 284
- 6.6.4 具备检查点特性的数据源函数 286
- 6.7 自定义数据接收器函数 287
- 6.7.1 SinkFunction接口 287
- 6.7.2 RichSinkFunction抽象类 289
- 6.8 数据流连接器 290
- 6.8.1 内置连接器 290
- 6.8.2 数据源和数据接收器的容错保证 291
- 6.8.3 Kafka连接器 291
- 6.8.4 安装Kafka的注意事项 293
- 6.8.5 Kafka 1.0.0+ 连接器 293
- 6.8.6 Kafka消费者 294
- 6.8.7 Kafka生产者 307
- 6.8.8 Kafka连接器指标 317
- 7.1 DataSet的基本概念 320
- 7.1.1 批处理示例程序 320
- 7.1.2 数据源 324
- 7.1.3 数据接收器 327
- 7.2 数据集的基本操作 328
- 7.3 将参数传递给函数 344
- 7.4 广播变量 346
- 7.4.1 注册广播变量 346
- 7.4.2 访问广播变量 347
- 7.4.3 代码实现 347
- 7.5 物理分区 349
- 7.5.1 Rebalance 350
- 7.5.2 PartitionByHash 351
- 7.5.3 PartitionByRange 352
- 7.5.4 SortPartition 354
- 7.6 批处理的本地测试 355
- 7.6.1 本地执行环境 355
- 7.6.2 集合支持的数据源和数据接收器 355
- 8.1 基础概念和通用API 357
- 8.1.1 添加依赖 357
- 8.1.2 第一个Hello World表程序 358
- 8.1.3 表程序的公共结构 359
- 8.1.4 创建一个TableEnvironment 360
- 8.1.5 在目录中注册表 361
- 8.1.6 查询一个表 365
- 8.1.7 DataStream和DataSet API的集成 366
- 8.1.8 数据类型到表模式的映射 370
- 8.1.9 查询优化 373
- 8.2 SQL 374
- 8.2.1 指定一个查询 375
- 8.2.2 SQL支持的语法 376
- 8.2.3 SQL操作 376
- 8.2.4 数据类型 386
- 8.2.5 保留关键字 387
- 8.3 Table API 387
- 8.4 自定义函数 388
- 8.4.1 标量函数 389
- 8.4.2 表函数 390
- 8.4.3 聚合函数 392
- 8.4.4 自定义函数与运行环境集成 394
- 8.5 SQL客户端 396
- 8.5.1 启动SQL客户端 396
- 8.5.2 配置参数 399
- 8.5.3 分离的SQL查询 406
- 8.5.4 SQL客户端中的视图 407
- 8.5.5 SQL客户端中的时态表 408
- 9.1 动态表 410
- 9.1.1 动态表和连续查询 410
- 9.1.2 在数据流中定义动态表 411
- 9.1.3 动态表到数据流的转换 416
- 9.2 时间属性 418
- 9.2.1 基本概念 418
- 9.2.2 组窗口 418
- 9.2.3 处理时间 420
- 9.2.4 事件时间 422
- 9.3 动态表的Join 423
- 9.3.1 常规Join 423
- 9.3.2 时间窗口Join 426
- 9.4 时态表 429
- 9.4.1 需求背景 429
- 9.4.2 时态表函数 430
- 9.5 查询配置 435
- 9.5.1 查询配置对象 435
- 9.5.2 空闲状态保留时间 436
- 9.6 连接外部系统 436
- 9.6.1 概述 437
- 9.6.2 表模式 439
- 9.6.3 更新模式 440
- 9.6.4 表格式 441
- 9.6.5 表连接器 442
- 9.6.6 未统一的TableSources和TableSinks 448
- 10.1 执行参数 452
- 10.1.1 在ExecutionEnvironment中设置参数 452
- 10.1.2 在ExecutionConfig中设置参数 453
- 10.2 并行执行 455
- 10.2.1 操作符级别 455
- 10.2.2 执行环境级别 455
- 10.2.3 客户端级别 456
- 10.2.4 系统级别 457
- 10.2.5 设置最大并行度 457
- 10.3 重启策略 457
- 10.3.1 固定延迟重启策略 458
- 10.3.2 故障率重启策略 459
- 10.3.3 没有重新启动策略 460
- 10.3.4 回退重启策略 461
- 10.4 程序打包和部署 461
- 10.4.1 打包Flink程序 462
- 10.4.2 Web UI(Web管控台)提交 462
- 10.4.3 命令行客户端提交 466
- 10.5 命令行接口 466
- 10.5.1 将Flink程序提交到Flink集群 467
- 10.5.2 列出集群中的作业 468
- 10.5.3 调整集群中的作业 469
- 10.5.4 保存点操作命令 471
- 10.6 执行计划 473
- 10.6.1 在线可视化工具 473
- 10.6.2 Web管控台可视化 474