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()

《Spark原理深入与编程实战》