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

如何提取Databricks失败作业运行中的报错信息?

解决方案

1. 使用Jobs Runs Get Output API提取Notebook报错

调用/api/2.1/jobs/runs/get-output接口并传入目标run_id,这个接口会返回Notebook任务的执行输出,包含具体错误信息。

示例curl调用:

curl -X GET -n \
  https://<databricks-instance>/api/2.1/jobs/runs/get-output?run_id=<your-run-id>

作业失败时,响应里的error字段下,message或details子字段会包含AnalysisException:这类具体异常内容;如果是Notebook输出的结构化错误,还可查看notebook_output下的子结构提取详情。

2. 通过Jobs Runs Get Logs API获取运行日志

使用/api/2.1/jobs/runs/get-logs接口获取作业的标准错误流(stderr),Notebook中的运行时异常通常会输出到这里。

示例curl调用:

curl -X GET -n \
  https://<databricks-instance>/api/2.1/jobs/runs/get-logs?run_id=<your-run-id>&log_type=stderr

返回的纯文本日志可通过字符串匹配(比如过滤包含AnalysisException:的行)提取报错信息,日志量大时需处理offset和limit分页参数。

3. 查询Databricks系统表获取报错详情

Databricks的系统表system.jobs.job_runs和system.jobs.run_details中,error_message字段直接存储了作业失败的详细原因,包括Notebook中的异常。

用Spark SQL查询后可直接转为DataFrame供Tableau使用:

SELECT run_id, job_id, error_message, start_time, end_time
FROM system.jobs.job_runs
WHERE run_result = 'FAILED'

查询结果可写入Tableau可访问的数据源(如Delta Lake、S3等)。

注意事项

  • 确保操作账号拥有jobs.get、jobs.getOutput、jobs.getLogs权限,以及系统表的读取权限。
  • 若Notebook中是自定义抛出的异常,需确保异常信息输出到stderr,否则无法被API捕获。
  • 解析报错文本时,可使用字符串处理函数(如Python的re.findall、Spark SQL的regexp_extract)精准提取AnalysisException:后的具体内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 10:42:51