我使用的是FlinkDocker1.4.0,我已经创建了一个scala作业在flink上运行。作业使用typesafe配置,该配置类似于:
servers = "localhost:9092"
servers = ${?KAFKA_SERVERS}
问题是,如果我设置 KAFKA_SERVERS
在docker compose文件中启动jobmanager和taskmanager。但是我想使用程序参数从webui设置它们。我试图补充 env.java.opts="-DKAFKA_SERVERS=192.168.99.100:9092
如图所示,但在jar里看不到。有没有办法在flink webui中设置每个作业的环境变量?
2条答案
按热度按时间iq3niunx1#
不可能只为每个作业设置环境变量。
flink集群由taskmanagers和jobmanagers组成,它们是jvm进程。提交作业不会产生任何新的jvm进程,因此只能在clusterwise中设置env变量。
您可以尝试将此参数作为命令行参数传递。
tjvv9vkg2#
它不会工作,因为taskmanager的jvm机器是在提交作业之前生成的,作业是在这些jvm中执行的,因此不能以这种方式传递环境变量。你放的盒子
env.java.opts="-DKAFKA_SERVERS=192.168.99.100:9092"
甚至被称为“程序选项”(args
传递给你的main
函数)。这个答案对此提供了更详细的解释:ApacheFlink-自定义java选项在job中不可识别,建议解决方案:
生成作业时不要依赖环境变量。