我正在使用
运行本地flink群集./bin/start_local.sh
我通过运行
启动flink作业./bin/flink run -p 3 lib/myApp.jar <insert command line args here>
这可以按预期工作。但是,如果我要更新我的JAR文件(即 lib / myApp.jar )并重新启动上述作业,我的新JAR似乎不会生效。在这种特殊情况下,我通过重命名字段来更新JAR的架构输出。使用更新的JAR重新启动作业时,作业的输出仍然具有旧字段。
是否有一些需要更新的缓存?这是更新应用程序的正确方法吗?请注意,出于此目的,我现在不关心Savepoints。
谢谢!
答案 0 :(得分:0)
这种情况正在发生,因为WebUI仍在使用旧的jar文件。从IDE
重新生成jar文件后,有两种方法选项#1:
确保在生成工件时,您选择重建选项
然后,使用您使用的命令通过终端再次发送jar
文件。
./bin/flink run -p 3 lib/myApp.jar <insert command line args here>
选项#2:使用web UI
提交jar文件确保在conf.yaml
文件
jobmanager.web.submit.enable: true
然后使用UI中提供的选项
提交您的jar如果您有任何其他问题,请与我们联系。
答案 1 :(得分:0)
某些作业在您认为已停止时(例如,在ctrl + c之后)不会停止,这又会在您执行新的 run 时产生陈旧的JAR幻觉。执行结果似乎不受您最近打包的代码更改的影响!
防止这种情况发生的最好方法是停止所有相关作业,然后重新运行新的jar。因此,请执行以下操作:
flink list # lists all job IDs
flink stop <job_id> # ideally this will work, and no in-flight data is lost
flink cancel <job_id> # only execute this if previous fails
如果现在运行新的jar,则所有功能都应按预期工作。 请注意,如果您必须取消作业,则有飞行中数据丢失的风险。但在某些情况下,这可能是唯一的方法(如果您的事件源未实现 StoppableFunction )