设置全局变量
Flink允许将自定义的配置传递给ExecutionConfig的环境接口,由于执行配置科在所有的用户功能中访问,因此自定义配置将在所有功能中全局可用。
Configuration conf = new Configuration();
conf.setString("mykey","myvalue");
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.getConfig().setGlobalJobParameters(conf);
请注意,您还可以将扩展ExecutionConfig.GlobalJobParameters
类的自定义类作为全局作业参数传递给执行配置。该接口允许实现该Map<String, String> toMap()
方法,该方法将依次显示来自 Web 前端配置的值。
算子中访问配置
全局作业参数中的对象可以在系统的许多地方访问。所有实现RichFunction
接口的用户函数都可以通过运行时上下文访问。
public static final class Tokenizer extends RichFlatMapFunction<String, Tuple2<String, Integer>> {
private String mykey;
@Override
public void open(Configuration parameters) throws Exception {
super.open(parameters);
ExecutionConfig.GlobalJobParameters globalParams = getRuntimeContext().getExecutionConfig().getGlobalJobParameters();
Configuration globConf = (Configuration) globalParams;
mykey = globConf.getString("mykey", null);
}