如何从Azure Data Factory管道运行时传递Databricks ClusterID
在Azure Data Factory中运行时动态配置Databricks链接服务的ClusterID和WorkspaceURL
核心实现方案
ADF默认的链接服务是静态配置,但通过链接服务参数化结合管道参数/变量传递,可以实现运行时动态赋值WorkspaceURL和ClusterID,满足多集群按需调用的需求,具体步骤如下:
步骤1:参数化Databricks链接服务
- 进入Azure Data Factory,打开目标Databricks链接服务的编辑界面
- 点击右上角的「参数」按钮,新增两个字符串类型参数:
WorkspaceURLClusterID
- 将链接服务中原本静态填写的「Workspace URL」和「Cluster ID」,替换为参数引用:
- Workspace URL填
@linkedService().WorkspaceURL - Cluster ID填
@linkedService().ClusterID
- Workspace URL填
- 保存修改后的链接服务
步骤2:在管道中动态传递参数
- 创建或打开目标ADF管道,添加Databricks Notebook/作业活动
- 配置活动的链接服务时,选择已参数化的Databricks链接服务,此时会弹出参数赋值窗口:
- 直接绑定管道参数:比如通过
@pipeline().parameters.TargetClusterID传入指定集群ID - 按条件动态选择:用表达式根据集群规模映射ID,示例:
@if(pipeline().parameters.ClusterScale == 'Large', 'cluster-xxxxxx-large', 'cluster-xxxxxx-small') - 从外部配置读取:先通过Lookup活动读取存储的集群配置表,再用
@activity('ReadClusterConfig').output.firstRow.ClusterID传递值
- 直接绑定管道参数:比如通过
步骤3:验证运行效果
- 触发管道时传入对应参数(如ClusterScale、TargetClusterID)
- 查看管道运行日志,确认Databricks活动成功调用了指定规模的集群
注意事项
- 确保链接服务使用的身份(服务主体/MSI)拥有目标集群的访问权限
- 若使用交互式集群,需提前确保集群处于运行状态;作业集群则需提前配置好对应模板
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

