“富函数”是 DataStream API 提供的一个函数类的接口,所有 Flink 函数类都有其 Rich 版本。
与常规函数的区别
可以获取运行环境的上下文,并拥有一些生命周期方法,所以可以实现更复杂的功能。
示例
public static class MyMapFunction extends RichMapFunction<SensorReading,Tuple2<Integer, String>> {@Overridepublic Tuple2<Integer, String> map(SensorReading value) throws Exception {return new Tuple2<>(getRuntimeContext().getIndexOfThisSubtask(),value.getId());}@Overridepublic void open(Configuration parameters) throws Exception {System.out.println("my map open");// 以下可以做一些初始化工作,例如建立一个和 HDFS 的连接}@Overridepublic void close() throws Exception {System.out.println("my map close");// 以下做一些清理工作,例如断开和 HDFS 的连接} }
