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

如何通过API或其他方式程序化运行Databricks任务?支持Notebook调用

程序化运行Databricks任务的可行方案

有两种主流方式可以在Notebook中程序化触发Databricks任务,解决你当前仅能获取运行ID的问题:

1. 使用dbutils.notebook.run直接调用Notebook任务

如果目标任务本身是Notebook,可直接用Databricks内置的dbutils工具触发运行,支持传递参数、设置超时时间,还能获取任务输出。

示例代码:

# 调用指定路径的Notebook,设置30分钟超时,传递自定义参数
notebook_output = dbutils.notebook.run(
    path="/Workspace/Users/xxx@example.com/target_notebook",
    timeout_seconds=1800,
    arguments={"param1": "value1", "param2": 123}
)

# 打印任务执行后的输出内容
print(notebook_output)

2. 通过Databricks Jobs API触发任意类型任务

如果需要触发Spark作业、Python脚本、Delta Live Table流水线等非Notebook任务,或者需要更灵活的任务控制,可使用Databricks Jobs API实现。

实现步骤:

  • 先在Databricks控制台生成个人访问令牌(PAT),权限需包含jobs.run
  • 在Notebook中用requests库发送POST请求触发任务

示例代码:

import requests

# 配置Databricks工作区信息
databricks_instance = "https://<你的Databricks工作区URL>"
pat_token = "<你的个人访问令牌>"
job_id = 123  # 要触发的目标任务ID

# 构造API请求头与参数
headers = {
    "Authorization": f"Bearer {pat_token}",
    "Content-Type": "application/json"
}
payload = {
    "job_id": job_id,
    # 可选:传递任务参数(根据任务类型调整参数字段)
    "notebook_params": {"param1": "value1"}
    # 若为Spark作业,替换为"spark_submit_params": ["--class", "com.example.MyApp"]
}

# 发送触发请求
response = requests.post(
    f"{databricks_instance}/api/2.1/jobs/run-now",
    headers=headers,
    json=payload
)

# 解析返回的运行信息
run_info = response.json()
print(f"触发的任务运行ID: {run_info['run_id']}")
print(f"当前任务状态: {run_info['state']['life_cycle_state']}")

扩展:查询任务运行结果

若需后续获取任务最终状态或结果,可调用jobs/get-run API:

run_id = run_info["run_id"]
response = requests.get(
    f"{databricks_instance}/api/2.1/jobs/get-run",
    headers=headers,
    params={"run_id": run_id}
)
run_details = response.json()
print(f"任务最终状态: {run_details['state']['result_state']}")

两种方式对比

  • dbutils.notebook.run:操作简单,无需额外配置令牌,仅支持Notebook任务,调用期间当前Notebook会阻塞直到任务完成
  • Jobs API:支持所有任务类型,可异步触发任务(不阻塞当前Notebook),但需要配置令牌,权限管理更严格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 04:48:28