如何配置现有集群,通过Shell脚本调用REST API触发Azure Databricks Notebook
用Shell脚本调用REST API触发Azure Databricks Notebook(关联指定运行中集群)
一、前置准备
- 获取Azure Databricks工作区实例URL:格式为
https://<databricks-instance>.azuredatabricks.net,例如https://eastus2.azuredatabricks.net - 创建并获取个人访问令牌(PAT):在工作区「用户设置」→「访问令牌」生成,权限至少包含
jobs.create和clusters.view - 确认目标集群集群ID:可从集群页面URL提取(格式为
https://<instance>/#setting/clusters/<cluster-id>/configuration),或通过API查询集群列表获取
二、REST API调用配置(Shell脚本实现)
使用curl调用Databricks Jobs API的runs/submit端点,直接关联已运行集群触发Notebook执行。
示例Shell脚本
#!/bin/bash # 配置核心参数 DATABRICKS_URL="https://<你的工作区实例>.azuredatabricks.net" PAT_TOKEN="dapiXXXXXXXXXXXXXXXXXXXXXXXX" CLUSTER_ID="0123-456789-abc123" NOTEBOOK_PATH="/Users/your-email@domain.com/目标Notebook完整路径" # 发起POST请求触发Notebook curl -X POST \ "${DATABRICKS_URL}/api/2.0/jobs/runs/submit" \ -H "Authorization: Bearer ${PAT_TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "run_name": "Shell触发的Notebook任务", "existing_cluster_id": "'"${CLUSTER_ID}"'", "notebook_task": { "notebook_path": "'"${NOTEBOOK_PATH}"'", "base_parameters": { "param1": "动态参数值1", "param2": "动态参数值2" } } }'
参数说明
existing_cluster_id:指定已处于「RUNNING」状态的集群ID,必须是当前工作区内运行中的集群notebook_task.notebook_path:Notebook在Databricks工作区的完整路径(从根目录开始,区分大小写)base_parameters:可选,传递给Notebook的动态参数,Notebook内可通过dbutils.widgets.get("param1")读取
三、响应与状态查询
成功调用后返回包含运行ID的JSON响应:
{ "run_id": 123456, "run_page_url": "https://<instance>/#job/0/runs/123456" }
可通过run_id调用jobs/runs/get端点查询运行状态:
curl -X GET \ "${DATABRICKS_URL}/api/2.0/jobs/runs/get?run_id=123456" \ -H "Authorization: Bearer ${PAT_TOKEN}"
四、注意事项
- 确保PAT令牌权限足够,若遇权限错误,需在工作区权限设置中调整令牌权限范围
- 目标集群必须处于运行状态,否则API会返回集群未运行的错误
- Notebook路径需严格匹配工作区内的实际路径,大小写错误会导致找不到Notebook
内容的提问来源于stack exchange,提问作者Harsh Dhyani
相关产品推荐
相关产品推荐

