reduce 算子底层

debug一下找到reduce算子的调用链,进到下图这个类里面

主要去看下图这个函数

1. 先拿到 这次进入的value 

2.判断是不是在历史状态values里面,拿到历史聚合过的状态值。(这里就已经初步可以看出flink的基于状态是怎么回事了)

2.如果在的话,就调用你new 的reduceFunction里面实现的reduce函数逻辑,将历史状态值和这次进入的value进行聚合,然后调用outpur.collect进行输出(凡是算子最后调用这个函数来进行输出)

4 如果不在的话,也就是 新value,把它放入历史状态values中,等待下次进入的value进行上述操作。

posted @ 2022-01-07 18:42  习惯了蓝  阅读(159)  评论(0)    收藏  举报