You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ADF重启Databricks工作流并从失败点恢复?

解决ADF调用Databricks工作流时从失败任务重启的问题

直接调用启动新工作流的POST API肯定会从头跑,要实现从失败任务重启,得结合Databricks的重跑指定任务能力和ADF的错误分支来做,具体步骤如下:

关键逻辑

Databricks工作流提供了专门的重跑API,能针对已失败的工作流实例,只重新执行失败的任务(跳过已成功的)。你之前的问题就是用错了API——应该调用重跑接口,而非启动新工作流的接口。

具体操作步骤

1. 在ADF中保存Databricks工作流的运行ID

用ADF的Web活动调用Databricks工作流启动API时,返回结果里会有一个run_id,把这个值存到ADF的变量(比如var_db_run_id)里。启动API的返回示例:

{
  "run_id": "1a2b3c4d5e6f",
  "run_page_url": "https://your-workspace.cloud.databricks.com/...",
  ...
}

2. 配置ADF的错误分支

在执行Databricks工作流的Web活动后面,添加错误分支:

  • 错误分支里加一个新的Web活动,用来调用Databricks的重跑失败任务API
  • API地址格式:https://<你的Databricks工作区域名>/api/2.0/jobs/runs/rerun
  • 请求方法选POST,请求体填:
    {
      "run_id": "@variables('var_db_run_id')",
      "rerun_failed_tasks": true
    }
    
  • 别忘了配置认证:用Azure AD令牌或者Databricks个人访问令牌,确保ADF有调用这个API的权限。

3. 验证效果

当Databricks工作流里的任务失败时,ADF会触发错误分支,调用重跑API时因为指定了rerun_failed_tasks: true,Databricks会自动跳过已经成功的任务,只重新执行失败的任务以及依赖它的后续任务。

踩坑提醒

  • 别再用jobs/runs/submit接口了,那是开新工作流的,必须用jobs/runs/rerun才是重跑已有实例的失败任务。
  • 确认ADF变量确实存到了正确的run_id,别传空值或者错的ID。
  • 检查权限:用来认证的令牌得有jobs.runRerun的权限,不然会调用失败。

内容的提问来源于stack exchange,提问作者Ritvik Chauhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 18:42:22