我正在使用flink-docker 1.4.0,我创建了一个scala作业,可以在Flink上运行。该作业使用类似于以下内容的类型安全配置:
servers = "localhost:9092"
servers = ${?KAFKA_SERVERS}
如果我在docker-compose文件中设置KAFKA_SERVERS
,启动jobmanager和taskmanager,问题就是它完美无缺。
但是我想使用Program Arguments从WebUI中设置它们。
我试图添加env.java.opts="-DKAFKA_SERVERS=192.168.99.100:9092
this image。但它在罐子里面是不可见的。有没有办法在Flink WebUI中为每个作业设置环境变量?
答案 0 :(得分:1)
不能仅为每个作业设置环境变量。
Flink集群由作为jvm进程的Taskmanagers和Jobmanagers组成。提交作业不会产生任何新的jvm进程,因此您只能集群设置env变量。
您可以尝试将此参数作为命令行参数传递。
答案 1 :(得分:1)
由于TaskManager的JVM机器在提交作业之前生成并且作业在这些JVM中执行,因此无法工作,因此您无法以这种方式传递环境变量。您放置env.java.opts="-DKAFKA_SERVERS=192.168.99.100:9092"
的框甚至称为“计划选项”(args
已传递到您的main
功能。
这个答案为此提供了更详细的解释: Apache Flink - custom java options are not recognized inside job 并建议解决方案:
在产生作业时不要转发环境变量。