在DataStream作业中,您可以根据实际需求从Main函数中获取自定义参数。
自定义参数的配置和获取方法
在DataStream作业中定义
paramName=paramValue
,即可Main函数中获取自定义参数。
paramName
:自定义参数名。paramValue
:自定义参数值。
说明 一个DataStream作业中可定义多个自定义参数。
自定义参数的配置和获取示例
说明 在开发界面配置
blink.job.name=jobnametest
后,可以通过如下代码将字符串jobnametest
赋值于jobName
变量。
import org.apache.flink.api.java.utils.ParameterTool;
import java.io.StringReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Properties;
public class getParameterExample {
public static void main(String[] args)throws Exception {
final String jobName;
final ParameterTool params = ParameterTool.fromArgs(args);
/*此处必须写configFile,读取configFile中的参数。*/
String configFilePath = params.get("configFile");
/*创建一个Properties对象,用于保存在平台中设置的相关参数值。*/
Properties properties = new Properties();
/*将平台页面中设置的参数值加载到Properties对象中。*/
properties.load(new StringReader(new String(Files.readAllBytes(Paths.get(configFilePath)), StandardCharsets.UTF_8)));
/*获取参数。*/
jobName = (String) properties.get("blink.job.name");
}
}
说明 该示例仅适用于在Main函数中获取并使用自定义参数。如果您需要在Flink算子中使用自定义参数,则需要在上述代码的基础上增加如下代码,将自定义参数转化为全局作业参数(GlobalJobParameters)后,在Flink算子中通过Configuration类的getproperty方法获取对应的参数。
env.getConfig().setGlobalJobParameters(ParameterTool.fromPropertiesFile(configFilePath));