(十六)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: 保存一个元素的列表。可以往这个列表中追加数据,并在当前的列表上进行检索。可以通过 add(T) 或者 addAll(List) 进行添加元素,通过 Iterable get() 获得整个列表。还可以通过 update(List) 覆盖当前的列表。
  • ReducingState: 保存一个单值,表示添加到状态的所有值的聚合。接口与 L

你可能感兴趣的:(Flink全景解析,flink,大数据,实时数据,实时数据处理,状态管理,flink状态管理)