Flink 开发中有如下场景,数据需要经过两次 ProcessFunction 处理,第一步 ProcessV1 的一些信息重复不想通过每条数据传输至 ProcessV2,这时便捷的方法时对 ProcessV1 需要存储的元素进行去重缓存,保证全局共用一份缓存,可以有效减少储存空间,下面分别尝试三种缓存方式:
A.ValueState 缓存
B.HashMapCache 缓存
C.RedisCahce 缓存

Tips:
后续测试均基于下述自定义 Source,该 Source 周期性产生一批数字并生成 InputData 类:
- import org.apache.flink.streaming.api.functions.source.{RichSourceFunction, SourceFunction}
-
- import java.util.concurrent.TimeUnit
-
- class SourceFromCollection extends RichSourceFunction[InputData] {
- private var isRunning = true
- var start = 0
-
- override def run(ctx: SourceFunction.SourceContext[InputData]): Unit =