如何在Azure Data Factory管道前期启动Databricks集群以加速执行?
解决方案:提前并行启动Databricks集群以优化ADF管道效率
可以通过ADF的Web活动调用Databricks REST API,在管道执行前期步骤的同时后台启动集群,实现并行操作压缩总耗时,具体步骤如下:
1. 准备Databricks认证信息
- 生成Databricks个人访问令牌(PAT):在Databricks工作区的「用户设置」-「访问令牌」中创建,确保令牌拥有Can Manage集群的权限
- 将PAT存储在Azure密钥保管库中,通过ADF的链接服务引用,避免明文暴露
2. 重构ADF管道为并行分支结构
在ADF管道中添加两个并行执行的分支:
- 分支A:执行管道的前期步骤(如数据提取、格式校验、源数据准备等原有逻辑)
- 分支B:通过Web活动触发Databricks集群启动
3. 配置Web活动启动集群
在分支B中添加Web活动,配置参数如下:
- URL:
https://<你的Databricks工作区域名>/api/2.0/clusters/start
(工作区域名格式通常为adb-xxxxxx.xx.azuredatabricks.net) - 方法:POST
- Headers:
Content-Type:application/jsonAuthorization:Bearer @{linkedService().DatabricksPAT}(假设密钥保管库链接服务名为DatabricksPAT)
- Body:
(集群ID可在Databricks工作区的集群详情页获取){ "cluster_id": "<你的目标集群ID>" }
4. 可选:添加集群就绪检查逻辑
为避免Notebook在集群未就绪时执行失败,可在分支B末尾添加循环检查逻辑:
- 添加Until活动,循环调用Databricks的集群状态查询API
- Web活动URL:
https://<你的Databricks工作区域名>/api/2.0/clusters/get - Body:
{"cluster_id": "<目标集群ID>"} - Until活动的终止条件:
@equals(activity('GetClusterStatus').output.state, 'RUNNING')
5. 合并分支执行Notebook
等分支A的前期步骤完成,且分支B的集群就绪后,再执行Databricks Notebook活动,此时集群已处于运行状态,无需等待启动时间
注意事项
- 如果集群已处于运行状态,调用启动API不会产生重复操作,API会直接返回成功响应
- 确保Databricks集群的自动终止时间设置合理,避免在管道间隙提前 shutdown
内容的提问来源于stack exchange,提问作者AbakusNantis
相关产品推荐
相关产品推荐

