
# 从checkpoint恢复spark应用的限制
#### 问题
Spark应用可以从checkpoint恢复，用于从上次任务中断处继续往下执行，以保证数据不丢失。但是，在某些情况下，从checkpoint恢复应用会失败。
#### 回答
由于checkpoint中包含了spark应用的对象序列化信息、task执行状态信息、配置信息等，因此，当存在以下问题时，从checkpoint恢复spark应用将会失败。
1. 业务代码变更且变更类未明确指定SerialVersionUID。
2. spark内部类变更，且变更类未明确指定SerialVersionUID。
另外，由于checkpoint保存了部分配置项，因此可能导致业务修改了部分配置项后，从checkpoint恢复时，配置项依然保持为旧值的情况。当前只有以下部分配置会在从checkpoint恢复时重新加载。
```
"spark.yarn.app.id",
 "spark.yarn.app.attemptId",
 "spark.driver.host",
 "spark.driver.bindAddress",
 "spark.driver.port",
 "spark.master",
 "spark.yarn.jars",
 "spark.yarn.keytab",
 "spark.yarn.principal",
 "spark.yarn.credentials.file",
 "spark.yarn.credentials.renewalTime",
 "spark.yarn.credentials.updateTime",
 "spark.ui.filters",
 "spark.mesos.driver.frameworkId",
 "spark.yarn.jars"
```
#### 解决方法
手动删除checkpoint目录，重启业务程序。
![](https://support.huaweicloud.com/devg3-mrs/public_sys-resources/note_3.0-zh-cn.png)
删除文件为高危操作，在执行操作前请务必确认对应文件是否不再需要。
