我正在使用 flink-docker 1.4.0,并且我创建了一个要在 Flink 上运行的 scala 作业。该作业使用类型安全的配置,如下所示:
servers = "localhost:9092"
servers = ${?KAFKA_SERVERS}
问题是,如果我在 docker-compose 文件中设置KAFKA_SERVERS
启动作业管理器和任务管理器,它就可以完美运行。但我想使用程序参数从 WebUI 设置它们。我试图添加env.java.opts="-DKAFKA_SERVERS=192.168.99.100:9092
,例如这张图片。但它在罐子里是不可见的。有没有办法在 Flink WebUI 中为每个作业设置环境变量?
它不起作用,因为任务管理器的 JVM 机器是在提交作业之前生成的,并且作业在这些 JVM 中执行,因此您不能以这种方式传递环境变量。您放置env.java.opts="-DKAFKA_SERVERS=192.168.99.100:9092"
的框甚至称为"程序选项"(args
传递给您的main
函数(。
这个答案对此提供了更详细的解释:Apache Flink - 自定义 Java 选项在作业中无法识别并建议解决方案:
生成作业时不要中继环境变量。
不能只为每个作业设置环境变量。
Flink 集群由任务管理器和作业管理器组成,它们是 jvm 进程。提交作业不会生成任何新的 jvm 进程,因此您只能按集群设置 env 变量。
您可以尝试将此参数作为命令行参数传递。