Flink状态

Flink状态管理

状态类型:KeyedState、OperatorState

一、KeyedState

KeyedState:基于KeyedStream上的状态。状态是跟key绑定的。每一个key对应一个state。所以用之前必须先分组。

1.ValueState

保存一个可以更新和检索的值。通过update(T)进行更新,通过T Value()进行检索。

2.ListState

保存一系列元素的列表。可以往这个列表中追加数据。

添加元素:add(T)或add(List)

获取整个列表:Iterable get()

更新:update(List),更新当前的列表

3.MapState

维护了一个映射列表。可以添加键值对到状态中,可以获得所有键值对放入迭代器。

更新状态中的元素:put(uk,uv)或putAll(Map<uv,uk>)

遗留问题:MapState添加值后需要更新,如何显性更新MapState。

4.ReducingState

保存一个单值,表示添加到状态的所有聚合。接口与ListState类似,使用add()增加元素,使用提供的ReducFunction进行聚合。

5.AggregatingState

保留一个单值,表示添加到状态的所有聚合。接口与ListState类似,使用add()增加元素,会使用AggregateFunction进行聚合。

6.FoldingState

保存一个单值,表示添加到状态的所有值的聚合。与ReducingState相反,聚合类型能与添加到状态的元素类型不同。与ListState类型相同,但使用add()添加元素会用指定的FoldFunction折叠整聚合值。

原文地址:https://www.cnblogs.com/yangyh11/p/14209419.html