在Databricks中写入JSON文件遇FileNotFoundError问题求助
在Databricks中写入JSON文件(含二进制)的正确方法
错误原因分析
你遇到的FileNotFoundError是因为目标路径的父目录/dbfs/mypath不存在,Python的open函数不会自动创建缺失的上级目录,直接写入就会报错。
正确实现方式
方式一:Python原生API(适合二进制文件)
先手动创建父目录,再用open写入二进制内容:
import os # 确保父目录存在,exist_ok=True避免重复创建报错 os.makedirs('/dbfs/mypath', exist_ok=True) # 用with语句安全写入二进制文件 with open('/dbfs/mypath/test.json', 'wb') as f: f.write(files)
这种方式完全支持二进制文件写入,wb模式就是专门用于二进制写入的。
方式二:Databricks dbutils工具(支持二进制)
你之前误解了dbutils.fs.put,它并非只能写文本文件。只要传入的files是字节类型(bytes),就能直接写入二进制内容:
# overwrite=True表示覆盖已存在的文件,可选 dbutils.fs.put('/mypath/test.json', files, overwrite=True)
如果目标路径的父目录不存在,dbutils.fs.put会自动创建,无需手动处理。
方式三:Spark API(适合结构化JSON数据)
如果你的JSON内容是结构化数据(比如DataFrame),推荐用Spark的官方API写入,效率更高:
# 假设df是你的结构化数据DataFrame df.write.mode("overwrite").json("/dbfs/mypath/test.json")
内容的提问来源于stack exchange,提问作者meuto
相关产品推荐
相关产品推荐

