目录
一、前言
在Flink中,我们会对接Kafka,Kafka的参数比较多,如果我们希望通过灵活的方式修改参数,而不是把参数值硬编码到代码中,那么可以通过以下两种方式。
二、实现
我们可以使用Flink的内置工具类ParameterTool.get()的方式获取传递的参数值
2.1 通过参数方式直接传递
/**
* 从args中获取参数值
* 工具类:org.apache.flink.api.java.utils.ParameterTool
* 传参方式:-- || - 方式传递
* @param args
*/
def testFromArgs(args: Array[String]): Unit = {
val tool: ParameterTool = ParameterTool.fromArgs(args)
val groupId: Any = tool.get("group.id", "-") // key,defaultValue
val topics = tool.getRequired("topics") //必填参数
println(groupId + " : " + topics)
}
传参方式:-- || - 两种方式,个人喜欢使用--方式。
2.2 通过配置文件来获取参数值
1)代码:
/**
* 从配置文件中获取参数值
* important: 生产上不要把配置文件放到resources下,不然修改后要重新打包,我们放到conf下
* 文件类型:源码只是去读文件,并没限制文件类型,使用.conf | .txt也可以;
* key和value之间分割符: 使用 = 或者 : (源码)
*
* @param args
*/
def testFromProperties(): Unit = {
//
val tool: ParameterTool = ParameterTool.fromPropertiesFile("conf/kafka.properties")
val groupId: Any = tool.get("group.id", "-") // key,defaultValue
val topics = tool.getRequired("topics") //必填参数
println(groupId + " : " + topics)
}
2)配置文件:
a. 也可以通过配置文件获取,需要注意的是不要把配置文件放到resources目录下,因为修改resources目录下的文件要重新打包。可以新建conf文件夹,放到下面。
b. 文件类型限制:源码只是使用FileInputStream去读文件,并没限制文件类型,使用.conf | .txt也可以,个人喜欢使用properties
c. 分隔符限制:key和value之间分割符: 使用 = || : 都可以,个人喜欢使用=