1- 什么是Flink State状态计算
简介: Flink之所以能这么流行,离不开它最重要的四个基石:Checkpoint、State、Time、Window。
- 1)、窗口
Window和时间Time(事件时间)
- 2)、状态
State和检查点Checkpoint
状态计算:流式计算中,从数据源,到数据转换,最后数据终端,都会对State状态进行关联。
无状态计算:
有状态(State)计算:
2- Flink State 状态组织形式
划分
官网文档:https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/stream/state/state.html
- 转态State存在的两种形式(Forms):Managed(管理)和Raw(原始)
3- Flink State 状态基本类型
划分
Flink中有两种基本的状态:Keyed State 和 Operator State。
1)、Keyed State
2)、Operator State
:
- Operator State又称为 non-keyed state,
与Key无关的State
,每一个 operator state 都仅与一个 operator 的实例绑定。Operator State 可以用于所有算子,但一般常用于 Source
。
3)、KeyedState与OperatorState区别
4- Flink State存储 State 数据结构
简介: 有状态计算其实就是需要考虑历史数据
,而历史数据需要搞个地方存储起来。Flink为了方便不同分类的State的存储和管理,提供了如下API/数据结构来存储State。
1)、Keyed State,保存Keyed state的数据结构
2)、Operator State,需要自己实现 CheckpointedFunction
或 ListCheckpointed
接口,保存Operator state的数据结构:ListState<T>
和BroadcastState<K,V>
。
- 通常实现方式:
CheckpointedFunction和ListState