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

无法通过Databricks FUSE挂载路径访问DBFS文件的技术求助

解决Databricks中文件访问的路径混淆问题

兄弟我太懂这种摸不着头脑的情况了——明明dbutils.fs.head能正常读到文件,换pandas或者其他方式就报错,核心原因其实是你混淆了DBFS(Databricks文件系统)和集群节点本地文件系统的路径规则!

为什么会出错?

dbutils.fs系列命令直接操作的是Databricks专属的DBFS,它的路径(比如/FileStore/tables/flights_small.csv)是DBFS的逻辑路径。但pandas、Python原生文件操作这类工具,默认访问的是运行笔记本的集群节点的本地文件系统,这俩完全是两个独立的存储区域,所以直接用DBFS路径给pandas读,它当然找不到文件啦!

给你三个靠谱的解决方法:

方法一:用DBFS的本地挂载路径访问

Databricks默认会把整个DBFS挂载到集群节点的/dbfs目录下,你只需要在原来的DBFS路径前加上/dbfs,pandas就能顺利找到文件了:

import pandas as pd
# 把DBFS路径转成本地挂载路径
df = pd.read_csv('/dbfs/FileStore/tables/flights_small.csv')

方法二:用Spark API读取后转pandas DataFrame

既然是在Databricks环境里,更推荐用原生的Spark来读取文件,再转成pandas格式,这样完全不用纠结路径问题:

from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
# 注意根据你的文件情况调整参数:header=True表示文件有表头,inferSchema=True自动推断列类型
spark_df = spark.read.csv('/FileStore/tables/flights_small.csv', header=True, inferSchema=True)
# 转成pandas DataFrame
pandas_df = spark_df.toPandas()

方法三:复制文件到本地临时路径(不推荐,仅作补充)

如果一定要用本地文件路径的方式,也可以用dbutils把DBFS里的文件复制到节点本地的临时目录:

# 把DBFS文件复制到本地/tmp目录
dbutils.fs.cp('/FileStore/tables/flights_small.csv', 'file:/tmp/flights_small.csv')
# 用pandas读取本地临时文件
df = pd.read_csv('/tmp/flights_small.csv')
# 用完可以删掉临时文件避免占空间
dbutils.fs.rm('file:/tmp/flights_small.csv')

额外排查点

如果用了上面的方法还是报错,建议先跑一下dbutils.fs.ls('/FileStore/tables/')看看实际的文件名——有时候上传文件后,Databricks会自动给文件名加一串后缀(比如flights_small.csv_202405201234),这时候你用原来的文件名当然找不到啦!

内容的提问来源于stack exchange,提问作者Probhakar Sarkar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 07:52:34