Databricks社区版中用open读取DBFS文件失败的原因及解决方法
问题原因及解决办法
原因
Spark读取DBFS文件时,是通过Databricks内置的DBFS客户端接口访问的,不依赖本地文件系统挂载;而原生Python的open()函数直接访问计算节点的本地文件系统,在Databricks社区版中,默认并未将DBFS的/FileStore目录挂载到本地文件系统的/dbfs路径下,因此会触发文件不存在的错误。
解决办法
方法1:用Databricks内置dbutils工具读取文件
无需依赖本地文件系统,直接通过dbutils操作DBFS文件,示例代码:
# 读取文件内容 file_content = dbutils.fs.head("/FileStore/tables/Test.csv") # 按行处理内容 lines = file_content.split("\n") for line in lines: print(line)
如果文件较大,可先将DBFS文件复制到本地临时目录再读取:
# 复制到本地临时目录 dbutils.fs.cp("/FileStore/tables/Test.csv", "file:/tmp/Test.csv") # 读取本地文件 with open('/tmp/Test.csv', 'r') as f: content = f.read()
方法2:尝试启用DBFS FUSE挂载(社区版可能受限)
部分Databricks环境会将DBFS映射到/dbfs本地路径,但社区版出于资源限制可能默认未启用。若要尝试,可在集群配置中添加相关参数,但此方式在社区版中支持性有限,更推荐使用方法1。
内容的提问来源于stack exchange,提问作者nam
相关产品推荐
相关产品推荐

