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

Databricks使用Local File API读取文本文件报FileNotFoundError问题问询

问题原因

DBFS是Databricks提供的分布式文件存储系统,Python原生open()属于本地文件系统API,仅能识别当前计算节点的本地路径,无法直接解析dbfs:前缀的分布式存储路径,也不能默认访问DBFS中的文件。而Spark原生适配DBFS协议,所以通过sc.textFile等Spark API可以正常读取对应文件。

可用解决方案

方案1:使用DBFS本地挂载路径读取

Databricks运行环境默认将DBFS根目录挂载到了驱动节点本地的/dbfs路径下,直接在原路径前添加/dbfs前缀即可通过本地文件API访问:

with open("/dbfs/FileStore/tables/boringwords.txt", "r") as f_read:
  for line in f_read:
    print(line)

该方案适配所有Python原生文件操作逻辑,适合小型文件的读取场景。

方案2:使用dbutils工具读取

Databricks内置的dbutils工具原生支持DBFS操作,可直接读取对应路径的文件内容:

# 读取文件内容,dbutils.fs.head默认最大读取64KB内容,适合小型文本文件
content = dbutils.fs.head("/FileStore/tables/boringwords.txt")
for line in content.split("\n"):
    print(line.strip())

方案3:复用Spark读取结果

如果已经通过Spark RDD/DataFrame完成文件读取,可直接通过collect()方法将分布式数据转为驱动节点本地的Python对象处理,和你现有逻辑一致:

boring_words = sc.textFile("/FileStore/tables/boringwords.txt")
word_set = set(i.strip() for i in boring_words.collect())
注意事项
  • 仅Databricks Runtime 5.1及以上版本默认开启DBFS本地挂载,低于该版本的环境需先确认挂载配置
  • 超过10MB的文件不推荐使用本地API读取,会占用驱动节点过多内存,优先使用Spark分布式处理

内容的提问来源于stack exchange,提问作者Riyaz Ali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:36:02