flink学习笔记-dataSet参数传递:构造器传递、withParameters传递、全局参数传递。

在dataSet代码当中,经常用到一些参数,我们可以通过构造器的方式传递参数,或者使用withParameters方法来进行参数传递,或者使用ExecutionConfig来进行参数传递

  • 1:使用构造器来传递参数

    object FlinkParameter {
    
      def main(args: Array[String]): Unit = {
        val env=ExecutionEnvironment.getExecutionEnvironment
        import org.apache.flink.api.scala._
        val sourceSet: DataSet[String] = env.fromElements("hello world","abc test")
        val filterSet: DataSet[String] = sourceSet.filter(new MyFilterFunction("test"))
        filterSet.print()
        env.execute()
      }
    }
    
    class MyFilterFunction (parameter:String) extends FilterFunction[String]{
      override def filter(t: String): Boolean = {
        if(t.contains(parameter)){
          true
        }else{
          false
        }
      }
    }
    
  • 2:使用withParameters来传递参数

    import org.apache.flink.api.common.functions.{FilterFunction, RichFilterFunction}
    import org.apache.flink.api.scala.ExecutionEnvironment
    import org.apache.flink.configuration.Configuration
    
    object FlinkParameter {
      def main(args: Array[String]): Unit = {
        val env=ExecutionEnvironment.getExecutionEnvironment
        import org.apache.flink.api.scala._
        val sourceSet: DataSet[String] = env.fromElements("hello world","abc test")
        val configuration = new Configuration()
        configuration.setString("parameterKey","test")
        val filterSet: DataSet[String] = sourceSet.filter(new MyFilter).withParameters(configuration)
        filterSet.print()
        env.execute()
      }
    }
    class MyFilter extends RichFilterFunction[String]{
      var value:String ="";
      override def open(parameters: Configuration): Unit = {
        value = parameters.getString("parameterKey","defaultValue")
      }
      override def filter(t: String): Boolean = {
        if(t.contains(value)){
          true
        }else{
          false
        }
      }
    }
    
  • 3:全局参数传递

    import org.apache.flink.api.common.ExecutionConfig
    import org.apache.flink.api.common.functions.{FilterFunction, RichFilterFunction}
    import org.apache.flink.api.scala.ExecutionEnvironment
    import org.apache.flink.configuration.Configuration
    
    object FlinkParameter {
      def main(args: Array[String]): Unit = {
        val configuration = new Configuration()
        configuration.setString("parameterKey","test")
    
        val env=ExecutionEnvironment.getExecutionEnvironment
        env.getConfig.setGlobalJobParameters(configuration)
        import org.apache.flink.api.scala._
        val sourceSet: DataSet[String] = env.fromElements("hello world","abc test")
    
        val filterSet: DataSet[String] = sourceSet.filter(new MyFilter)
        filterSet.print()
        env.execute()
      }
    }
    class MyFilter extends RichFilterFunction[String]{
      var value:String ="";
      override def open(parameters: Configuration): Unit = {
        val parameters: ExecutionConfig.GlobalJobParameters = getRuntimeContext.getExecutionConfig.getGlobalJobParameters
    
        val globalConf:Configuration =  parameters.asInstanceOf[Configuration]
        value = globalConf.getString("parameterKey","test")
      }
      override def filter(t: String): Boolean = {
        if(t.contains(value)){
          true
        }else{
          false
        }
      }
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值