如何基于Run ID将Databricks作业状态保存至变量?ADF触发场景遇问题
获取ADF触发的Databricks Notebook作业状态
问题分析
你之前的代码返回None,是因为解析toJson()后的JSON结构时路径错误——currentRunState并非直接处于顶层结构中。
正确实现方式
方式1:直接调用Databricks API(推荐)
无需解析JSON,直接通过API获取运行状态:
# 获取当前Notebook的运行状态对象 run_state = dbutils.notebook.entry_point.getDbutils().notebook().getContext().currentRunState().get() # 提取状态字符串 run_status = run_state.status().toString() # 验证结果 print(f"作业状态: {run_status}")
方式2:修正JSON解析路径
如果偏好解析JSON,需调整到正确的路径:
import json context_str = dbutils.notebook.entry_point.getDbutils().notebook().getContext().toJson() context = json.loads(context_str) # 从tags节点下获取运行状态 run_status = context['tags'].get('spark.databricks.notebook.runState', None) print(run_status)
注意事项
- 两种方式在ADF触发的Notebook场景下,均可正确返回
IN_PROGRESS、FAILED或SUCCEEDED状态 - 方式1更稳定,避免Databricks内部JSON结构变更导致的失效
内容的提问来源于stack exchange,提问作者Hanna
相关产品推荐
相关产品推荐

