RocksDBStateBackend 会多出序列化,反序列化 所以性能更差,但是他可以支撑很大的状态.
- 测试不同状态后端(注意开启checkpoint),使用 map_dp.get(key).append(value) 的效果是否相同
- 其中 value是listbuffer类型
- 内存/文件 状态后端: 符合预期
- rocksDB 状态后端: 数组元素无法添加进去
- 解决方案:
- 修改为 map_dp.put("k",map_dp.get("k") :+ in._2) 即可
测试代码:
- package com.yy.checkpointTest.state
-
- import org.apache.flink.api.common.functions.RichMapFunction
- import org.apache.flink.api.common.state.{MapState, MapStateDescriptor}
- import org.apache.flink.api.common.typeinfo.{TypeHint, TypeInformation}
- import org.apache.flink.configuration.{Configuration, RestOptions}
- import org.apache.flink.contrib.streaming.state.RocksDBStateBackend
- import org.apache.flink.runtime.state.filesystem.FsStateBackend
- import org.apache.flink.streaming.api.CheckpointingMode
- import org.apache.flink.streaming.api.environment.CheckpointC