一文讲解Flink1.9 SQL空闲状态保留时间实现原理 |
大家一起来探讨,共同进步。 1、Flink SQL 空闲状态保留时间如何设置? setIdleStateRetentionTime(Time.minutes(idleStateMinTime),Time.minutes(idleStateMaxTime)) 2、空闲状态参数如何配置? Class KeyedProcessFunctionWithCleanupState<K,IN,OUT> 调用其方法 registerProcessingCleanupTimer https://ci.apache.org/projects/f ... thCleanupState.html 3、如何理解空闲状态保留时间实现原理? 空闲状态保留时间实现原理分析这一块没看太懂 -- 希望大家补充 4、registerProcessingCleanupTimer 方法如何使用? ------------------------------- 1.判断key为null 或者 this.Current + MinTime > 上一次的Timer ,则为key 注册一个Timer (currenttime + MaxTime) 并删除上一次的Timer ; 注册方法使用调用:registerProcessingCleanupTimer 删除方法调用:cleanupState ------------------------------- 对比来说:就像Streaming中的keyedProcessFunction中的 open processElement onTimer 等方法 open 初始化state processElement 首先判断state是否为空,如果是数据是第一次或者key为第一次的话,都会进逻辑体,然后为key更新一些属性值,然后围绕这个状态进行后续处理 onTimer 触发事件点 ------------------------------- |