如何解决Databricks中pandas/joblib无法加载DBFS内joblib/pickle文件的问题?
在Databricks中用非Spark工具加载DBFS中的joblib/pickle文件
你遇到的问题核心是路径格式错误:/dbfs:/ 是Spark API专用的URI格式,而joblib、pandas这类本地Python库只能识别Databricks集群节点本地挂载的DBFS路径,也就是/dbfs/(无冒号)。以下是几种可行的解决方法:
方法1:修正本地挂载路径
直接使用集群本地挂载的DBFS路径,去掉路径中的冒号:
import joblib # 正确路径格式:/dbfs/开头,无冒号 corpsEncoding = joblib.load('/dbfs/mnt/xxxx/encoders/corpsEncoder.joblib')
方法2:通过dbutils读取字节流加载
如果是Serverless集群或挂载存储有特殊配置,推荐用dbutils.fs读取文件内容到内存,再加载:
from io import BytesIO import joblib # 读取DBFS文件为字节内容 file_bytes = dbutils.fs.cat('/mnt/xxxx/encoders/corpsEncoder.joblib') # 转为可读取的字节流对象 stream = BytesIO(file_bytes) # 加载模型 corpsEncoding = joblib.load(stream)
方法3:先验证文件存在性
如果还是报错,先确认文件路径和权限没问题:
# 列出目标目录下的文件,确认文件存在 dbutils.fs.ls('/mnt/xxxx/encoders/')
如果输出中看不到目标文件,检查挂载路径拼写、存储权限或文件是否真的上传到对应位置。
注意:Serverless集群中DBFS的本地挂载支持有限,优先用方法2更稳定。
内容的提问来源于stack exchange,提问作者Cristina Campos
相关产品推荐
相关产品推荐

