Hi

我想你的问题是数据源中存在之前代码中没有很好处理的corner 
case,导致在处理某一条“脏数据”时,作业进入FAILED状态。此时即使从之前的checkpoint恢复,由于作业代码逻辑未变,之前的corner 
case依然无法处理,作业只能无限进去失败状态。

这种场景可以一开始时候将checkpoint的保留策略设置成RETAIN_ON_CANCELLATION 
[1],这样cancel作业之后,更改业务代码逻辑,从而可以处理之前的问题,再降作业上线从之前的checkpoint恢复 [2],这样做的话,数据是不会丢失的。

[1] 
https://ci.apache.org/projects/flink/flink-docs-stable/ops/state/checkpoints.html#retained-checkpoints
[2] 
https://ci.apache.org/projects/flink/flink-docs-stable/ops/state/checkpoints.html#resuming-from-a-retained-checkpoint

祝好
唐云

________________________________
From: Sun.Zhu <17626017...@163.com>
Sent: Sunday, June 14, 2020 0:20
To: user-zh@flink.apache.org <user-zh@flink.apache.org>
Cc: user-zh <user-zh@flink.apache.org>
Subject: 回复:Flink异常及重启容错处理

问题1:&nbsp; Flink希望开发者怎么处理程序的异常?
--异常数据当然需要用户自己try catch处理掉,否则即使从上个checkpoint恢复依然会使程序挂掉。
问题2:checkpoint是否可以转化为savepoint,使得在没来得及savepoint之前能够进行恢复?
―没太明白你的问题
问题3:如果我某条数据导致了异常,怎么样才忽略这条数据而不影响应用的状态和运行?
―本质是和问题1一样的,如果是flinksql任务,1.11会支持format.ignore-parse-errors


| |
Sun.Zhu
|
|
17626017...@163.com
|
签名由网易邮箱大师定制


在2020年06月9日 13:49,Z-Z<zz9876543...@qq.com> 写道:
Hi, 各位大佬们,请教几个问题:
&nbsp; &nbsp; 
背景:Flink程序在正常运行过程中由于某些原因抛出异常了(比如数据不正确、NullPointer等),设置了checkpoint,程序默认会无限重启,都没办法savepoint。
&nbsp; &nbsp; 问题1:&nbsp; Flink希望开发者怎么处理程序的异常?
&nbsp; &nbsp; 问题2:checkpoint是否可以转化为savepoint,使得在没来得及savepoint之前能够进行恢复?
&nbsp; &nbsp; 问题3:如果我某条数据导致了异常,怎么样才忽略这条数据而不影响应用的状态和运行?

回复