Hi
Savepoint 你可以理解为 OperatorId -> State 的一个映射[1],如果你不指定 OperatorId
则会随机生成一个,所以一般会需要用户指定一个 OperatorId。
另外你使用 SQL,可能 SQL 代码发生变更后,导致最终的作业 DAG 图已经变掉了,也就无法恢复了,首先,你可以看一下你两次执行的作业最终的
DAG 图是否完全一样,另外,可以看一下是否指定了 OperatorId

[1]
https://ci.apache.org/projects/flink/flink-docs-release-1.10/ops/state/savepoints.html
Best,
Congxian


LakeShen <shenleifight...@gmail.com> 于2020年4月3日周五 上午10:24写道:

> Hi ,
>
> 这种情况可能是你改变的 Flink SQL 的拓扑结构,导致部分算子的 uid 发生变化,然后在从状态恢复的时候,没有找到算子的状态。
> 所以在开发 SQL 任务的时候,一般更改 SQL 代码时,不要改变其拓扑结构,SQL 任务上线后,就不要在轻意改了。
>
> Best,
> LakeShen
>
> 酷酷的浑蛋 <apach...@163.com> 于2020年4月2日周四 下午6:31写道:
>
> > 关键我的程序是flink-sql,其它的算子基本都设置过uid了,flink-sql可以设置uid吗,或者说sql中的自动分配的uid怎么查找呢
> >
> >
> > | |
> > apache22
> > |
> > |
> > apach...@163.com
> > |
> > 签名由网易邮箱大师定制
> > 在2020年4月2日 18:22,Yangze Guo<karma...@gmail.com> 写道:
> > 如果没有显示指定的话,operator id将是一个随机生成的值[1].
> > 当从savepoint恢复时,将依据这些id来匹配,如果发生了变化,可能是你修改了你的jobGraph。Flink推荐显示的指定operator
> > id字面量。[2]
> >
> > [1]
> >
> https://ci.apache.org/projects/flink/flink-docs-master/ops/state/savepoints.html#assigning-operator-ids
> > [2]
> >
> https://ci.apache.org/projects/flink/flink-docs-master/ops/state/savepoints.html#faq
> >
> > Best,
> > Yangze Guo
> >
> > On Thu, Apr 2, 2020 at 6:01 PM 酷酷的浑蛋 <apach...@163.com> wrote:
> >
> >
> >
> > Failed to rollback to checkpoint/savepoint
> > hdfs://xxx/savepoint-9d5b7a-66c0340f6672. Cannot map checkpoint/savepoint
> > state for operator cbc357ccb763df2852fee8c4fc7d55f2 to the new program,
> > because the operator is not available in the new program. If you want to
> > allow to skip this, you can set the --allowNonRestoredState option on the
> > CLI.
> >
> >
> > 像上面这个错误,我怎么根据 operator cbc357ccb763df2852fee8c4fc7d55f2
> 去找是我程序中的哪个算子不能恢复呢?
> > | |
> > apache22
> > |
> > |
> > apach...@163.com
> > |
> > 签名由网易邮箱大师定制
> >
>

回复