(十六)Flink 状态管理
目录
状态类型
Keyed State
Keyed State 分类
状态有效期(TTL)
过期数据的清理
Operator State
Broadcast State
状态存储
State Backends 分类
设置 State Backend
RocksDB State Backend 详解
在 Flink 架构体系中,状态(State)计算是其重要的特性之一。状态用来保存中间计算结果或缓存数据。比如:
- 当应用程序搜索某些事件模式时,状态将存储到目前为止遇到的事件序列。
- 当按分钟/小时/天聚合事件时,状态保存待处理的聚合。
- 当在数据点流上训练机器学习模型时,状态保存模型参数的当前版本。
- 当需要管理历史数据时,状态允许有效访问过去发生的事件。
根据数据集是否按照 Key 划分,将状态分为 Keyed State 和 Operator State(Non-keyed State)两种类型。本章我们将从状态的类型、状态有效期、状态存储、状态持久化方面详细进行介绍。
状态类型
Flink 中定义了多种 State,基于不同的数据结构,应用不同的场景。
- ValueState: 保存一个可以更新和检索的值(每个值都对应到当前的输入数据的 key,因此算子接收到的每个 key 都可能对应一个值)。这个值可以通过 update(T) 进行更新,通过 T value() 进行检索。
- ListState: 保存一个元素的列表。可以