【Flink】Flink中什么是富函数


可互加微信,方便交流(备注请求时注明CSDN来的朋友):a917655983

在什么场景中使用富函数?

  许多时候我们需要在函数处理第一条记录之前就进行一些初始话工作或是取得函数运行时相关的上下文信息。

如何使用富函数?

  我定义了一个map算子,现在我如果要在map算子在处理第一条记录之前,就想取得该函数运行时的相关信息,和进行一些初始话工作。那么代码就应当类似于如下方式:
**.map(x=> 定义一个富函数)

富函数中的方法open()/close()

  在使用富函数的时候,我们可以对函数的生命周期实现两个额外的方法:

  • open():
    • 是富函数的初始方法。它在每个任务首次调用转换方法(如map,flter等算子)前调用一次。Open方法通常只用于那些只需要进行一次的设置工作
  • close():
    • 函数的终止方法,会在每个任务最后一次调用转换方法后调用一次。通常用于清理和释放资源。
    • 此外,还可以使用getRuntimeContext()方法来访问函数的RuntimeContext,从RuntimeContext中获取一些信息,例如函数的并行度,访问分区状态的方法等… …

如何通过代码实现一个富函数?

举例:
  我想要在使用map算子处理计算的时候,连接数据库,这个连接的代码只会运行一次,后续不会再运行,就可以利用富函数的初始话方法来进行定义.

这里我以flatMap富函数举例:

class flatMap_rich extends RichFlatMapFunction<In,Out>{
 override def open(configuration:Confuration) : kic  Unit = {} //创建初始话函数,例如创建和外部系统的连接
 override def flatMap(in : In,out:Collector<Out>)() :Unit = {} //做一些操作
override def close : Unit = {} //做一些清理工作,例如关闭和外部系统的连接
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值