这个问题可能发生在当尝试从一个 savepoint 中把 job 重启起来时,Flink 非常精细且显而易见的在检查 job graphs 上的每个 operator。这个错误消息的意思是说,在 job graph 中,Flink 没有找到一个或几个 operator,而且这个 operator 在 savepoint 中是被定义的。
想要解决这个问题,首先需要再次复查保存点的代码,特别是操作符实例化部分。另一个可能的解决方案是调试一个非空 savepoint,这样可以明确要恢复 job graph 中哪个部分出了问题。在 Flink Web UI 点击 job 的状态转换到'Savepoints' 子标签页,可以下载一个 savepoint 文件并使用如下命令来调试:
./bin/flink run -s /path/to/savepoint -d /path/to/job.jar -c YourClass
在这个命令中,/path/to/savepoint 是 you 已下载的 savepoint 的位置,/path/to/job.jar 对应 job 的已编译代码 jar 包的位置,YourClass 是包含-jobName/-jid/-fromSavepoint 选项的主类.