Flink程序外部传参
2021-11-17 13:37:24.0
从Flink 0.9开始,在Flink中就有了一个内置的ParameterTool,它可以帮助从外部源(如命令行参数、系统属性或属性文件)获取参数。在内部,它是字符串的map映射,保留key作为参数名,value作为参数值。
例如,我们可以考虑在DataStream API示例中使用ParameterTool,我们需要在其中设置Kafka属性:
String kafkaproperties = "/path/to/kafka.properties"; ParameterTool parameter = ParameterTool.fromPropertiesFile(propertiesFile);
从系统属性加载
我们可以读取系统变量中定义的属性。在初始化系统属性文件之前,我们需要通过设置Dinput=hdfs://myfile来传递系统属性文件。
然后,我们可以在ParameterTool中读取所有这些属性,如下所示:
ParameterTool parameters = ParameterTool.fromSystemProperties();
从命令行参数加载
我们还可以从命令行参数中读取参数。我们必须在调用应用程序之前设置--elements。
下面的代码展示了如何从命令行参数中读取参数:
ParameterTool parameters = ParameterTool.fromArgs(args);
从.properties文件加载
我们还可以从.properties文件中读取参数。代码如下:
String propertiesFile = "/my.properties"; ParameterTool parameters = ParameterTool.fromPropertiesFile(propertiesFile);
加载配置参数之后,我们可以在Flink程序中读取它们,如下所示:
parameter.getRequired("key"); parameter.get("paramterName", "myDefaultValue"); parameter.getLong("expectedCount", -1L); parameter.getNumberOfParameters()