如何通过.yaml文件在Databricks集群批量安装依赖库
Databricks 基于YAML文件批量安装集群依赖实现方案
你可以通过两种路径实现和txt批量安装同等效果的依赖部署,分别对应notebook会话级安装、集群全局自动安装两类场景,核心都是基于conda原生的yaml环境解析能力实现:
方案1:Notebook会话级快速安装
适合临时调试场景,不需要修改集群配置,直接在notebook单元格执行即可:
- 提前将符合conda规范的
environment.yml文件上传到可访问路径,支持DBFS、工作区本地文件路径 - 在单元格首行声明
%conda魔法命令,调用conda原生的环境更新接口批量安装所有依赖,示例命令如下:
%conda conda env update --name base --file /dbfs/FileStore/your_path/environment.yml --prune
其中--prune参数会自动移除yaml文件中未声明的冗余包,保证环境和配置完全一致。
你可以直接使用标准conda环境yaml格式编写依赖配置,示例:
channels: - conda-forge - defaults dependencies: - python=3.10 - pandas=2.2.* - pyarrow=14.* - pip: - databricks-sdk==0.30.0 - mlflow==2.10.0
注意:访问DBFS存储的yaml文件时,必须使用
/dbfs/开头的本地文件系统挂载路径,不能使用dbfs://协议路径,否则conda无法识别读取文件。
方案2:集群全局自动部署
适合长期使用的固定集群,集群启动时会自动给驱动、所有worker节点批量安装依赖,所有连接该集群的notebook、作业都可以直接调用依赖,不需要重复安装:
- 将编写好的
environment.yml上传到DBFS固定路径,比如dbfs:/cluster-init/deps/environment.yml - 新建bash初始化脚本,上传到DBFS路径
dbfs:/cluster-init/deps/install.sh,脚本内容如下:
#!/bin/bash set -e # 基于Databricks默认base环境更新依赖,不要新建独立环境避免内核匹配失败 conda env update --name base --file /dbfs/cluster-init/deps/environment.yml --prune # 清理安装缓存减少磁盘占用 /opt/conda/bin/conda clean -afy
- 进入集群配置页面,打开「高级选项」-「初始化脚本」配置项,添加上述install.sh的DBFS路径,保存后重启集群即可完成全节点依赖批量部署。
注意事项
- 不要在yaml中自定义conda环境名称,Databricks运行时默认使用base环境承载所有计算任务,新建独立环境会出现包装了但无法导入的问题
- yaml中支持混合配置conda源包、pip源包,不需要额外拆分requirements.txt文件
- 如果是作业场景使用,可以将上述conda更新命令写到作业的前置启动脚本中,实现作业级别的依赖隔离
内容的提问来源于stack exchange,提问作者Kumar Reddy
相关产品推荐
相关产品推荐

