如何通过Azure CI/CD推广UI创建的Databricks工作流作业至更高环境
使用Databricks API迁移UI创建的工作流作业到更高环境
一、导出源环境的作业定义
- 获取作业ID:在源环境Databricks UI中打开目标作业,从URL提取
job-id(例如https://<source-instance>/jobs/123中的123)。 - 调用Jobs Get API导出作业配置:
使用curl命令获取完整作业定义(替换占位符为实际值):
也可以用Python的curl -n -X GET https://<source-databricks-instance>/api/2.1/jobs/get?job_id=<job-id> \ -H "Authorization: Bearer <source-personal-access-token>"requests库实现:import requests source_token = "<source-personal-access-token>" source_instance = "<source-databricks-instance>" job_id = "<job-id>" response = requests.get( f"https://{source_instance}/api/2.1/jobs/get?job_id={job_id}", headers={"Authorization": f"Bearer {source_token}"} ) job_definition = response.json() - 清理作业定义:移除目标环境不需要的自动生成字段,包括:
job_idcreator_user_namecreated_timelast_modified_timerun_as_user_name
同时检查并调整依赖资源:- 如果作业绑定了特定集群ID,替换为目标环境中对应集群的ID,或改为使用集群名称(
existing_cluster_name) - 确认库依赖在目标环境可用,或在作业定义中保留库安装配置
二、导入到目标环境
- 准备清理后的作业定义文件:将处理好的JSON保存为
job-definition.json。 - 调用Jobs Create API创建作业:
使用curl提交到目标环境(替换占位符):
Python版本:curl -n -X POST https://<target-databricks-instance>/api/2.1/jobs/create \ -H "Authorization: Bearer <target-personal-access-token>" \ -d @job-definition.jsontarget_token = "<target-personal-access-token>" target_instance = "<target-databricks-instance>" response = requests.post( f"https://{target_instance}/api/2.1/jobs/create", headers={"Authorization": f"Bearer {target_token}"}, json=job_definition ) print("Created job ID:", response.json()["job_id"]) - 验证作业:在目标环境Databricks UI中检查作业是否创建成功,或调用
Jobs List API确认。
注意事项
- 多任务工作流的任务依赖关系(
depends_on字段)会被自动保留,无需额外修改 - 若使用实例池,需确保目标环境存在同名或同ID的实例池,否则调整作业定义中的实例池配置
- 敏感信息(如密钥、凭证)建议在导入前从作业定义中移除,在目标环境通过Secrets管理重新配置
内容的提问来源于stack exchange,提问作者RubenSo
相关产品推荐
相关产品推荐

