Yearly Archives: 2023
flink-30 状态后端
在flink中状态的存储、访问以及维护,都是由一个可拔插的组件决定:状态后端(state backend)
状态后端主要复制管理本地状态的存储方式和位置
状态后端的分类
HashMapStateBackend (默认)
状态存储在内存里,将状态当作...
flink-29 算子状态
算子状态就是一个算子并行实例上定义的状态,作用范围被限定为当前算子任务
算子状态的实际应用场景不如Keyed State多,一般用在Source或Sink等外部系统连接的算子上,或者完全没有key定义的场景
flink的kafka连接器中就用到了算子状态
...
flink-28 按键分区状态
值状态 ValueState
value() 取出值状态里的数据
update(value) 更新值状态里的数据
clear() 清除值状态里的数据
状态描述器 ValueStateDescriptor
计算相邻两个水位的插值相差10的...
flink-27 状态管理
在flink中算子任务,可以分为无状态和有状态两种
无状态的算子任务只需要观察每个独立事件,根据当前输入的数据直接转换输出结果。之前讲到的基本转换算子map、filter、flatMap,计算时不依赖其他数据,都属于无状态的算子。
而有状态的算子任务...
flink-24 处理函数
Flink提供了8个不同的处理函数:
ProcessFunction
最基本的处理函数,基于DataStream直接调用.process()时作为参数传入
KeyedProcessFunction
对流按键分区后的处理函数,基于KeyedStrea...
flink-23 基于时间的合流 双流联结
窗口联结
固定时间内两条流数据的匹配情况
flink为基于一段时间的双流合并专门提供了一个窗口联结算子,可以定义时间窗口,并将两条流中共享一个公共键(key)的数据放在窗口中配对处理。
窗口联结的调用
窗口联结在代码中的实现,首先需要调用Data...
flink-21 时间语义 水位线
比如1月1日买的牛奶,但是喝牛奶是1月2日,也就是买牛奶的事件时间1月1日,喝牛奶的处理时间1月2日
事件时间
数据产生的时间
处理时间
数据真正被处理的时刻
flink1.12版本开始,flink已经将事件时间作为默认的时间语义了。
...