Flink获取外部传递参数的两种方式

目录

 

一、前言

二、实现

2.1 通过参数方式直接传递

2.2 通过配置文件来获取参数值


一、前言

在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之间分割符: 使用 = || : 都可以,个人喜欢使用=

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值