在Flink任務中,需要加載外置配置參數到任務中,在Flink的開發文檔中介紹了,Flink提供了一個名爲 ParameterTool 的工具來解決這個問題
Flink開發文檔:
https://github.com/apache/flink/blob/master/docs/dev/application_parameters.zh.md
其引入配置的方式有3種:
1. From .properties files
String propertiesFilePath = "/home/sam/flink/myjob.properties"; ParameterTool parameter = ParameterTool.fromPropertiesFile(propertiesFilePath);
2. From the command line arguments
在args中添加
--input hdfs:///mydata --elements 42
在代碼中使用
public static void main(String[] args) { // parse input arguments final ParameterTool parameterTool = ParameterTool.fromArgs(args); }
3. From system properties
使用
-Dinput=hdfs:///mydata
或者
ParameterTool parameter = ParameterTool.fromSystemProperties();
ParameterTool有如下幾個方法可以獲得參數
parameter.getRequired("input"); parameter.get("output", "myDefaultValue"); parameter.getLong("expectedCount", -1L); parameter.getNumberOfParameters();
註冊全局變量
// parse input arguments ParameterTool parameters = ParameterTool.fromSystemProperties(); // register the parameters globally ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.getConfig().setGlobalJobParameters(parameters);
下面使用第1種方法來配置Flink消費Kafka的Topic
Ref:
https://github.com/apache/flink/blob/master/flink-end-to-end-tests/flink-streaming-kafka-test-base/src/main/java/org/apache/flink/streaming/kafka/test/base/KafkaExampleUtil.java