知识卡片

RichFunction的生命周期钩子

专业/工作 · 502.f

内容

Flink的算子函数如果继承RichFunction系列(如RichMapFunction、RichSinkFunction),就多了两个生命周期方法:open在算子实例被创建后、开始处理第一条数据前只执行一次,适合放数据库连接、外部客户端这类只需要初始化一次的资源;close在算子实例销毁前执行,适合做连接关闭这类清理工作;真正逐条处理数据的map/invoke等方法则在open和close之间被反复调用。这种”一次性初始化 + 反复调用的处理逻辑 + 一次性清理”三段式结构,是很多流式/长驻计算框架处理外部资源生命周期的通用范式:把资源获取和释放的时机与业务处理逻辑解耦,避免每处理一条数据就重新建一次连接这种低效且容易耗尽资源的写法。与之相呼应的是[[Savepoint与Checkpoint的本质区别|Operator State]]的initializeState/snapshotState方法,二者是同一套”进入时初始化、退出前落盘”思路在不同资源类型上的具体体现。

参考来源

《Flink入门与实战》第6章《DataStream API和DataSet API》