flink算子
算子分类:

注意,使用lambda表达式的时候,需要注意类型推断的问题,首推内部类或者单独实现接口的类。
基础转换:
map 1对1,flatmap 1对多,filter 过滤。
keyby:逻辑上将流划分为不相交的分区,具有相同 key 的记录会被分配到同一个分区。
KeyedStream<MyEvent, String> keyedStream = eventStream.keyBy(MyEvent::getUserId);
转换后,后续的算子(如 sum, reduce等聚合算子)将在每个 key 的上下文中独立执行。
还有一系列的RichFunction,可以获得更多丰富信息的富函数。
底层还有process算子:
ProcessFunction 是为以下场景准备的:
- 需要访问状态(
ValueState,ListState) - 需要注册事件时间或处理时间定时器
- 需要访问水位线、时间戳
- 需要旁路输出(Side Output)
- 需要复杂的状态管理逻辑(如 CEP、窗口自定义)
而你的场景只是数据转换 + 展开,完全不需要这些能力。
状态管理:
算子状态、键控状态、状态后端。
状态可以认为是一个本地变量。
更多的场景其实是key相关的键控状态用的最多

https://blog.csdn.net/ytp552200ytp/article/details/124793108

参考:https://chuna2.787528.xyz/jiangbei/p/13930018.html
状态存在tm,方便直接操作,ck由jm管理协调

浙公网安备 33010602011771号