Flink: Function And Rich Function , 对比 Function ,Rich functions还提供了这些方法:open、close、getRuntimeContext 和 setRuntimeContext
序言
了解了Flink提供的算子,那我们就可以自定义算子了.自定义算子的目的是为了更加灵活的处理我们的业务数据,并将满足条件的结果Sink到目标存储地cuiyaonan2000@163.com
Function有2中类型即 Function 和 Rich Function .从字面意思我们可以了解 Rich Function 肯定是比Function提供了更多的功能的.
参考版本为: v1.13.2
官网地址:用户自定义 Functions | Apache Flink
Function
以算子Map举例 我们自定义的Function需要实现类(针对其它算子比如Filter,则是实现接口FilterFunction)
MapFunction<?, ?>
举例实现类
class MyMapFunction implements MapFunction<String, Integer> {
public Integer map(String value) { return Integer.parseInt(value); }
};
data.map(new MyMapFunction());
Rich Functions
Rich functions 对比 Function 还提供了这些方法:open
、close
、getRuntimeContext
和 setRuntimeContext
由上可见一个RichFunctions的调用绝非是一次性买卖,提供了一个生命周期的管理,即从open开始到close结束.同时提供了getRuntimeContext
以获取Flink的上下文环境.
需要注意的是Flink 流数据处理_难得糊涂-CSDN博客_flink数据处理范式 里已经很清楚地表明了,算子是针对窗口的计算执行者,且算子有并行度,则每个算子的生命周期是相互独立的.这个很好理解因为算子的有并行度,且相同算子的可能有多个线程,且分布在不同的服务器上.cuiyaonan2000@163.com.
- open()方法: 是rich function的初始化方法,当一个算子例如map或者filter被调用之前open()会被调用。
- close()方法: 是生命周期中的最后一个调用的方法,做一些清理工作。
- getRuntimeContext()方法: 提供了函数的RuntimeContext的一些信息,例如函数执行的并行度,任务的名字,以及state状态
同理针对Map算子,创建我们自己的自定义算子需要实现接口RichMapFunction
class MyMapFunction extends RichMapFunction<String, Integer> {
public Integer map(String value) { return Integer.parseInt(value); }
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2022-03-25 git push提交成功后如何撤销回退 我是手动修改再提交一次 。。或者IDEA有代码修改历史记录功能 进行回退
2022-03-25 vs2012中编译时出现程序集所使用的版本高于所引用的版本
2022-03-25 ftp服务器搭建并通过外网访问
2022-03-25 C# 反射数据库数据过程中值类型存在DBNull的处理方法 == System.DBNull.Value
2022-03-25 Git配置SSH及通过IDEA连接GitLab方法总结
2022-03-25 Git 未能顺利结束 (退出码 128)解决办法 git常用命令流程图
2022-03-25 IDEA之The directory xxxxx is under Git, but is not registered in the Settings.