You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

挂载Azure存储后在Databricks中使用os函数访问文件报错求助

问题解决:Azure Databricks中os/pandas访问挂载存储文件报错

核心原因

Databricks挂载路径(如/mnt/2023-project/...)属于DBFS(Databricks文件系统)路径,而os.listdir、pandas.read_excel等工具仅适配本地节点文件系统,无法直接识别DBFS路径,因此会报文件不存在错误。dbutils.fs.ls可正常工作是因为它是Databricks专为DBFS设计的操作工具。

解决方案

方案1:使用DBFS本地映射路径

Databricks默认将DBFS根目录映射到本地节点的/dbfs路径,在原挂载路径前添加/dbfs即可让本地工具识别文件:

  • 查看文件列表:os.listdir("/dbfs/mnt/2023-project/dashboard/ext")
  • 读取Excel文件:
import pandas as pd
df = pd.read_excel("/dbfs/mnt/2023-project/dashboard/ext/Marks.xlsx")

方案2:迁移至Databricks原生API(推荐)

若代码量允许,建议逐步替换为Databricks/Spark原生工具,避免依赖本地文件系统:

  • 读取Excel需先安装Spark Excel数据源库,再执行读取:
# 安装依赖库
%pip install spark-excel

# 读取Excel文件
df = spark.read.format("com.crealytics.spark.excel") \
  .option("header", "true") \
  .load("/mnt/2023-project/dashboard/ext/Marks.xlsx")
  • 文件列举仍使用dbutils.fs.ls("/mnt/2023-project/dashboard/ext")

方案3:复制文件至本地临时目录

若必须使用本地工具,可先将DBFS文件复制到节点临时目录(如/tmp)再操作:

# 复制文件到本地临时目录
dbutils.fs.cp("/mnt/2023-project/dashboard/ext/Marks.xlsx", "file:/tmp/Marks.xlsx")

# 用pandas读取本地文件
import pandas as pd
df = pd.read_excel("/tmp/Marks.xlsx")

# 操作完成后删除临时文件(可选)
import os
os.remove("/tmp/Marks.xlsx")

注意事项

  • 当前挂载配置使用凭据传递(CustomAccessToken),上述方案均无需修改挂载配置,可直接使用。
  • /dbfs映射仅在Driver节点生效,若代码运行在集群Worker节点(如UDF),无法依赖该映射,此时优先选择方案2。

内容的提问来源于stack exchange,提问作者Vishnu Suresh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 07:17:08