Hi Aven,
静态字段的使用可能会很 tricky,因为只有同一个 task 的代码才运行在同一个 classloader 里。我见过想用静态字段做全局 Map
存储的,那个实际上只有并行度设置为 1 的时候语义才对。
你说启动的生命周期执行一些用户代码,那其实就是 RichFunction 的 open
方法,它就是设计来做这个的。具体可以看你的实际业务,未必要搞得这么奇怪(x
Best,
tison.
aven.wu <
[hidden email]> 于2020年3月12日周四 上午10:54写道:
> Hello
>
> 还有一个问题,除了在算子的Open方法中获取这个参数还有别的地方可以获取吗?或者在Gobgraph启动的生命周期里面有哪个阶段可以被调用提执行一些用户代码。
>
> 我的需求是需要通过命令行参数初始化一些静态类的属性,全局的静态类会被算子调用以执行某些通用的功能,如果我在open方法中去初始化的话是不太优雅,并且为了保证可用必须在每个算子的Open方法中都调用,对于一些非Rich的算子使用静态方法就会有问题。
>
> Best
> Aven
>
> 发件人: zhisheng
> 发送时间: 2020年3月11日 21:16
> 收件人: user-zh
> 主题: Re: 关于Flink 命令行参数广播的问题
>
> hi,aven.wu
>
> 可以使用 ParameterTool
> 获取到传入的参数,然后通过 env.getConfig().setGlobalJobParameters(parameterTool);
>
> 在算子中可以在 open 方法里面通过
> getRuntimeContext().getExecutionConfig().getGlobalJobParameters(); 获取到配置
>
> aven.wu <
[hidden email]> 于2020年3月11日周三 下午3:42写道:
>
> > Hi,大家好!
> > 遇到一个问题,在使用flink run
> >
> 提交任务时命令行参数也是就那些被main方法接收的那些,不知道如何在taskManager获取到。导致必须从外部系统(hdfs,文件)来读取例如ES,mysql等连接配置。Flink是否有这种广播命令行参数的能力,如果没有是否会考虑加入这个特性。
> >
> > Best
> > Aven
> >
> >
>
>