flink 传参 启动_如何在flink中传递参数

本文介绍了Apache Flink中参数传递的多种方式,包括使用Configuration、ParameterTool、broadcast变量以及distributedCache。详细讲解了如何在Flink作业中传递和使用参数,适用于不同场景的需求,例如动态参数、大量数据广播和状态回传。
摘要由CSDN通过智能技术生成

众所周知,flink作为流计算引擎,处理源源不断的数据是其本意,但是在处理数据的过程中,往往可能需要一些参数的传递,那么有哪些方法进行参数的传递?在什么时候使用?这里尝试进行简单的总结。

使用configuration

在main函数中定义变量

1 //Class in Flink to store parameters

2 Configuration configuration = newConfiguration();3 configuration.setString("genre", "Action");4

5 lines.filter(newFilterGenreWithParameters())6 //Pass parameters to a function

7 .withParameters(configuration)8 .print();

使用参数的function需要继承自一个rich的function,这样才可以在open方法中获取相应的参数。

1 class FilterGenreWithParameters extends RichFilterFunction>{2

3 String genre;4

5 @Override6 public void open(Configuration parameters) throwsException {7 //Read the parameter

8 genre = parameters.getString("genre", "");9 }10

11 @Override12 public boolean filter(Tuple3 movie) throwsException {13 String[] genres = movie.f2.split("\\|");14

15 return Stream.of(genres).anyMatch(g ->g.equals(genre));16 }17 }

使用ParameterTool

使用configuration虽然传递了参数,但显然不够动态,每次参数改变,都涉及到程序的变更,既然main函数能够接受参数,flink自然也提供了相应的承接的机制,即ParameterTool。

如果使用ParameterTool,则在参数传递上如下

1 public static voidmain(String... args) {2 //Read command line arguments

3 ParameterTool parameterTool =ParameterTool.fromArgs(args);4

5 final ExecutionEnvironment env =ExecutionEnvironment.getExecutionEnvironment();6 env.getConfig().setGlobalJobParameters(parameterTool);7 ...8

9 //This function will be able to read

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值