场景: flink中的算子在初始化时想添加一些外部参数,这些外部参数只有在main启动时才会传入,可能数据的值不同
自已创建了一个类继承了RichFlatMapFunction<Row, Row> implements Serializable,实现了RichFlatMapFunction的flatMap方法,像下面的示例一样
public class FlatFunction1 implements FlatMapFunction<Row, Row> {
private String a;
private String b;
// 写了一个带参数的构造器,这样初始化这个算子时,就会在构造器中初始化一些参数,
public FlatFunction1(Object c){
//用c初始化 a,b
}
@Override
public void flatMap(String value, Collector<String> out) {
//执行逻辑
}
}
通过带参数的构造函数,在算子初始化就可以对算子内部的字段初始化
警告:我这些参数是算子内私有的,也就是private,但是不能写成static修饰的,否则如果是像k8s托管flink集群的这种方式,每一个task虽然都初始化了,但是执行时初始化后的字段还是null