Flink在使用各种不同算子的同时,为了能更细粒度的控制数据和操作数据,给开发者提供了对现有函数功能进行扩展的能力,这就是函数类(FunctionClasses)。也可以简单地理解为UDF函数(用户自定义函数)
Flink每一个算子的参数都可以使用lambda表达式和函数类两种的方式,其中如果使用函数类作为参数的话,需要让自定义函数继承指定的父类或实现特定的接口。
函数类(Function Classes)
函数类官方称之为:user-defined function
udf 是接口,每种udf提供了自己独特的方法用于处理流中的每一条数据
udf就是算子中的参数;各种算子对应各种udf;
(1)所有函数类接口的父接口都是Function,是一个空的接口,实现了序列化。
匿名函数(Lambda Functions)
就是Java8 Lambda表达式写法
DataStream
DataStream
富函数(Rich Functions)☆
RichXxxFunction
RichXxxFunction是抽象类
继承了AbstractRichFunction抽象类,获取了RichFunction接口提供的功能;
实现了XxxFunction接口,获取了独特的处理数据的功能
Flink中的所有UserDefineFunction都有”富函数”版本,比如:
MapFunction =>RichMapFunction
FlatMapFunction => RichFlatMapFunction
FilterFunction => RichFilterFuncti