如何在Azure DevOps流水线中使用Databricks无服务器集群运行nutter测试
在Azure DevOps流水线中使用Databricks无服务器集群运行Nutter单元测试
核心思路
无需依赖固定集群ID,通过动态定义无服务器集群配置,让Nutter在运行测试时自动创建临时无服务器作业集群,测试完成后集群会自动销毁。
具体实现步骤
1. 定义无服务器集群配置
创建JSON配置文件(例如serverless-cluster-config.json),填入无服务器集群的必要参数:
{ "spark_version": "14.3.x-scala2.12", "node_type_id": "Serverless", "enable_serverless_compute": true, "data_security_mode": "SINGLE_USER", "runtime_engine": "STANDARD", "num_workers": 0 }
注意:
spark_version需选择支持无服务器计算的版本(Databricks Runtime 13.3 LTS及以上);data_security_mode根据你的Workspace权限模型调整;num_workers固定设为0即可,无服务器集群无需手动指定worker数量。
2. 修改Nutter运行命令
将原命令中的固定ClusterID参数$CLUSTER替换为--cluster-spec,指向你的配置文件:
nutter run /Shared/ --cluster-spec serverless-cluster-config.json --recursive --junit_report
如果不想单独维护配置文件,也可以直接在命令中内嵌JSON配置:
nutter run /Shared/ --cluster-spec '{"spark_version":"14.3.x-scala2.12","node_type_id":"Serverless","enable_serverless_compute":true,"data_security_mode":"SINGLE_USER","runtime_engine":"STANDARD","num_workers":0}' --recursive --junit_report
3. 流水线环境与权限配置
- 确保Azure DevOps流水线使用的服务主体拥有Databricks Job创建权限和Workspace对象访问权限,能正常调用Databricks API。
- 在流水线任务中提前配置Databricks CLI环境:设置
DATABRICKS_HOST(你的Databricks工作区URL)和DATABRICKS_TOKEN(有权限的个人访问令牌)作为环境变量。
关键注意事项
- 无服务器集群为临时资源,测试完成后自动终止,不会产生闲置资源费用。
- 若遇到版本兼容性问题,可在Databricks工作区的集群创建页面确认当前支持的无服务器Spark版本,再更新配置中的
spark_version。
内容的提问来源于stack exchange,提问作者Sergio Polimante
相关产品推荐
相关产品推荐

