调用Databricks Jobs API触发任务时遇“Run settings must be specified”错误求助
问题:调用Databricks Jobs API触发DAG任务时返回"Run settings must be specified"错误
在Databricks中手动创建了一个包含多个子任务的DAG任务(任务类型为Run job),手动运行可正常完成所有子任务,但通过Python notebook调用API触发时,无论是否设置settings、留空settings、复制任务自身的settings JSON,还是替换整个data为完整任务JSON,均返回错误:
{"error_code":"INVALID_PARAMETER_VALUE","message":"Run settings must be specified"}
用户原代码示例:
import requests databricks_instance = "https://<my instance>" + ".cloud.databricks.com" access_token = "<my access token>" headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" } data = { "job_id": "<my job id>", "settings": {<settings copied from job's json>} } response = requests.post(f"{databricks_instance}/api/2.0/jobs/runs/submit", json=data, headers=headers) if response.status_code == 200: print(f"Job run triggered successfully for Job ID: {<my job id>}") else: print(f"Failed to trigger job run for Job ID: {<my job id>}") print(response.text)
用户已查阅相关文档但未找到解决方案。
解决方案:使用正确的API端点与最小化参数
问题核心是API端点使用错误:你用了jobs/runs/submit(用于创建并运行新任务),但触发已有任务应该使用jobs/run-now端点。
触发该DAG任务的最小化JSON参数仅需指定job_id,无需额外的settings字段,格式如下:
{ "job_id": "<你的任务ID>" }
修正后的完整代码:
import requests databricks_instance = "https://<my instance>" + ".cloud.databricks.com" access_token = "<my access token>" headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" } # 最小化参数:仅需job_id data = { "job_id": "<my job id>" } # 替换为正确的API端点 response = requests.post(f"{databricks_instance}/api/2.0/jobs/run-now", json=data, headers=headers) if response.status_code == 200: print(f"Job run triggered successfully for Job ID: {<my job id>}") else: print(f"Failed to trigger job run for Job ID: {<my job id>}") print(response.text)
如果需要传递运行时参数(如覆盖任务的某些配置),可以添加job_parameters字段,例如:
{ "job_id": "<你的任务ID>", "job_parameters": { "param1": "value1", "param2": "value2" } }
内容的提问来源于stack exchange,提问作者revitev
相关产品推荐
相关产品推荐

