这两个stateBackend有什么区别
速度和大小的区别
RocksDBStateBackend 会多出序列化,反序列化 所以性能更差,但是他可以支撑很大的状态.
和任务代码相关,可能导致bug
测试不同状态后端(注意开启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