在Databricks中使用pandas.read_excel时出现文件/目录不存在错误
解决Databricks中pandas.read_excel找不到文件的问题
核心原因
Databricks的dbutils.fs操作的是DBFS(Databricks文件系统),而pandas.read_excel默认读取的是集群节点的本地文件系统,两者路径规则不兼容:
- DBFS路径格式通常为
dbfs:/xxx/xxx/test.xlsx,这是Databricks内部的虚拟路径,pandas无法直接识别 - 集群节点本地文件系统的路径是常规的Unix路径,比如
/dbfs/xxx/xxx/test.xlsx或/tmp/xxx.xlsx
具体解决方法
方法1:使用DBFS的本地挂载路径
Databricks默认将DBFS挂载到集群节点的/dbfs目录下,只需把DBFS路径的dbfs:/替换为/dbfs/即可:
# 假设dbutils显示的路径是 dbfs:/mnt/datasets/test.xlsx import pandas as pd df = pd.read_excel("/dbfs/mnt/datasets/test.xlsx")
方法2:复制文件到本地临时目录
如果挂载路径访问有问题,可先通过dbutils.fs.cp将DBFS文件复制到节点本地临时目录,再用pandas读取:
# 复制DBFS文件到本地tmp dbutils.fs.cp("dbfs:/path/to/test.xlsx", "file:/tmp/test.xlsx") # 读取本地文件 import pandas as pd df = pd.read_excel("/tmp/test.xlsx")
方法3:检查路径细节
- 确认路径大小写:DBFS是区分大小写的,
Test.xlsx和test.xlsx是不同文件 - 避免路径末尾的斜杠:确保路径指向具体文件而非目录
- 验证文件权限:确保当前集群有该文件的读取权限(可通过
dbutils.fs.ls查看权限信息)
额外注意
如果执行read_excel时除了文件不存在,还出现Missing optional dependency错误,需在集群上安装依赖库:
# 安装openpyxl(处理.xlsx格式) %pip install openpyxl # 或安装xlrd(处理.xls格式) %pip install xlrd==1.2.0
内容的提问来源于stack exchange,提问作者smooth_smoothie
相关产品推荐
相关产品推荐

