Azure DBFS目录已存在但无法写入Pandas DataFrame至文件存储
解决Pandas DataFrame写入Databricks FileStore失败的问题
问题根源
你用dbutils.fs.mkdirs创建的是DBFS(Databricks文件系统)路径,但Pandas的to_csv依赖本地文件系统的挂载路径,二者的路径格式和权限校验逻辑有差异,导致报错目录不存在。
可行解决方案
方案一:修复本地挂载路径的写入逻辑
DBFS在本地的挂载路径是/dbfs(无冒号),先确认本地路径的存在性,再执行写入:
import os # 定义本地挂载的目标目录 target_local_dir = "/dbfs/FileStore/NER/" # 确保目录存在(避免因权限或缓存问题导致的目录不可见) if not os.path.exists(target_local_dir): os.makedirs(target_local_dir, exist_ok=True) # 写入CSV文件 entity.to_csv(os.path.join(target_local_dir, "entity.csv"), header=True, index=False)
方案二:转用Spark DataFrame写入(更稳定)
直接用Pandas写本地挂载路径可能遇到权限或缓存问题,转为Spark DataFrame写入DBFS更适配Databricks环境:
# 将Pandas DataFrame转为Spark DataFrame spark_entity = spark.createDataFrame(entity) # 写入DBFS路径,支持覆盖已有文件 spark_entity.write.mode("overwrite").option("header", "true").csv("dbfs:/FileStore/NER/entity.csv")
如果需要单个CSV文件而非分区文件,可先重分区:
spark_entity.repartition(1).write.mode("overwrite").option("header", "true").csv("dbfs:/FileStore/NER/entity_single.csv")
验证结果
执行完写入命令后,用以下代码确认文件是否生成:
dbutils.fs.ls("dbfs:/FileStore/NER/")
也可以直接在Databricks界面的Data > FileStore > NER目录下查看。
内容的提问来源于stack exchange,提问作者Melissa Ingle
相关产品推荐
相关产品推荐

