可以看到,要使用 State TTL 功能,首先要定义一个 StateTtlConfig 对象。StateTtlConfig 对象可以通过构造器模式来创建,典型地用法是传入一个 Time 对象作为 TTL 时间,然后可以设置时间处理语义(TtlTimeCharacteristic)、更新类型(UpdateType)以及状态可见性(StateVisibility)。当创建完 StateTtlConfig 对象,可以在状态描述符...
1、值状态(ValueState) 2、列表状态(ListState) 3、Map状态(MapState) 4、归约状态(ReducingState) 5、聚合状态(AggregatingState) 6、状态生存时间(TTL) 三、算子状态(Operator State) 1、列表状态(ListState) 2、联合列表状态(UnionListState) 3、广播状态(BroadcastState) 四、状态后端(State Backends) 1、...
Heap state backend 会额外存储一个包括用户状态以及时间戳的 Java 对象,RocksDB state backend 会在每个状态值(list 或者 map 的每个元素)序列化后增加 8 个字节。 暂时只支持基于 processing time 的 TTL。 尝试从 checkpoint/savepoint 进行恢复时,TTL 的状态(是否开启)必须和之前保持一致,否则会遇到 “StateMig...
类似地,ListState 的状态描述器就叫作 ListStateDescriptor,用法跟 ValueStateDescriptor 完全一致,其构造方法如下: publicListStateDescriptor(String name, Class<T> elementTypeClass){super(name,newListTypeInfo(elementTypeClass), (Object)null); } 1 2 3 映射状态 MapState 映射状态可以以键值对的形式将数据保...
vsd.enableTimeToLive(stateTtlConfig) //获取RuntimeContext val context:RuntimeContext = getRuntimeContext //获取指定的类型状态 vs = context.getState(vsd) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ①:该参数指定State存活时间,必须指定。
Flink State TTL 特性,该特性可以允许对作业中定义的 Keyed 状态进行超时自动清理(通常情况下,Flink 中大多数状态都是 Keyed 状态,只有少数地方会用到 Operator 状态,因此本文的“状态”均指的是 Keyed 状态),并且提供了多个设置参数,可以灵活地设定时间戳更新的时机、过期状态的可见性等,以应对不同的需求场景。
TTL Flink 中 State 支持设置 TTL: · MapState 的 TTL 是基于 UK 级别的· ValueState 的 TTL 是基于整个 key 的 举一反三 能使用 ListState 的场景,不要使用 ValueState 中存 List。大佬们已经把 MapState 和 ListState 性能都做了很多优化,高性能不香吗?下文会详细分析 ValueState 和 MapState 底层的...
ListState:即key上的状态值为一个列表。可以通过add方法往列表中附加值;也可以通过get()方法返回一个Iterable<T>来遍历状态值。 ReducingState:这种状态通过用户传入的reduceFunction,每次调用add方法添加值的时候,会调用reduceFunction,最后合并到一个单一的状态值。
Operator State(称为 non-keyed state) 常常存在于Source, Sink中。具体实现类例如:BroadcastState 例:Kafka Source 中用 OperatorState 记录 offset。 Keyed State 任何类型的 keyed state 都可以有有效期(TTL),所有状态类型都支持单元素的 TTL。 这意味着 List 元素和 Map 映射元素将独立到期。 例:SQL GroupBy...
ValueState 中存大对象很容易使 CPU 打满 Heap State 场景,两者性能类似。 TTL Flink 中 State 支持设置 TTL: MapState 的 TTL 是基于 UK 级别的 ValueState 的 TTL 是基于整个 key 的 举一反三 能使用 ListState 的场景,不要使用 ValueState 中存 List。大佬们已经把 MapState 和 ListState 性能都做了...