flink算子

算子分类:

 

企业微信截图_17599047232106

 注意,使用lambda表达式的时候,需要注意类型推断的问题,首推内部类或者单独实现接口的类。

基础转换:

 map 1对1,flatmap 1对多,filter 过滤。

keyby:逻辑上将流划分为不相交的分区,具有相同 key 的记录会被分配到同一个分区。

KeyedStream<MyEvent, String> keyedStream = eventStream.keyBy(MyEvent::getUserId);

转换后,后续的算子(如 sumreduce等聚合算子)将在每个 key 的上下文中独立执行。

 

还有一系列的RichFunction,可以获得更多丰富信息的富函数。

底层还有process算子:

ProcessFunction 是为以下场景准备的:

  • 需要访问状态(ValueStateListState
  • 需要注册事件时间或处理时间定时器
  • 需要访问水位线、时间戳
  • 需要旁路输出(Side Output)
  • 需要复杂的状态管理逻辑(如 CEP、窗口自定义)

而你的场景只是数据转换 + 展开,完全不需要这些能力。

 

状态管理:

算子状态、键控状态、状态后端。

状态可以认为是一个本地变量。

更多的场景其实是key相关的键控状态用的最多

企业微信截图_17600764432488

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

企业微信截图_17600765287370

 

参考:https://chuna2.787528.xyz/jiangbei/p/13930018.html

状态存在tm,方便直接操作,ck由jm管理协调

posted @ 2025-10-08 14:25  ---江北  阅读(8)  评论(0)    收藏  举报
TOP