
在说背景前,先说一下标题的结论:你配置的 rocksdb 只会影响 flink 任务中 keyed state 存储的方式和地方,flink 任务中的 operator state 不会受到影响。
状态:状态就是用户在程序中使用的数据结构。比如 flink 中的 MapState,ValueState,ListState。在一个 flink 任务中,不管我们使用了多少状态,这些状态只会分为 operator state,keyed state 两类状态。
状态管理:为了防止 long run 的 flink 任务挂了导致状态丢失,产生数据质量问题,flink 提供了状态管理(Checkpoint,Savepoint)的能力把我们使用的状态给管理起来,定时的保存到远程。然后可以在 flink 任务 failover 时,从远程把状态数据恢复到 flink 任务中,保障数据质量。
状态后端:状态后端就是决定了以什么样数据结构,什么样的存储方式去存储和管理我们的状态。flink 目前官方提供了 memory、filesystem,rocksdb 三种状态后端来存储我们的状态。
其实所有的内容都浓缩到了这样图中:

sql 开发
那么可以得到的结论就是: