Flink在使用各种不同算子的同时,为了能更细粒度的控制数据和操作数据,给开发者提供了对现有函数功能进行扩展的能力,这就是函数类(FunctionClasses)。也可以简单地理解为UDF函数(用户自定义函数)

Flink每一个算子的参数都可以使用lambda表达式和函数类两种的方式,其中如果使用函数类作为参数的话,需要让自定义函数继承指定的父类或实现特定的接口。

函数类(Function Classes)

函数类官方称之为:user-defined function

udf 是接口,每种udf提供了自己独特的方法用于处理流中的每一条数据

udf就是算子中的参数;各种算子对应各种udf;

(1)所有函数类接口的父接口都是Function,是一个空的接口,实现了序列化。

匿名函数(Lambda Functions)

就是Java8 Lambda表达式写法

DataStream tweets = env.readTextFile("INPUT_FILE");

DataStream flinkTweets = tweets.filter( tweet -> tweet.contains("flink") );

富函数(Rich Functions)☆

RichXxxFunction

RichXxxFunction是抽象类

继承了AbstractRichFunction抽象类,获取了RichFunction接口提供的功能;

实现了XxxFunction接口,获取了独特的处理数据的功能

Flink中的所有UserDefineFunction都有”富函数”版本,比如:

MapFunction =>RichMapFunction

FlatMapFunction => RichFlatMapFunction

FilterFunction => RichFilterFuncti

Copyright © 2088 欧洲世界杯预选赛_赛程世界杯 - tvzfj.com All Rights Reserved.
友情链接