正如标题所说,当使用以下命令将csv文件保存到数据库中时,我们会遇到间歇性错误:
df.toPandas().to_csv(f"/dbfs{saveMountName}/{Year}/{Month}/{Message}{Day}.csv", header=True, index=False)
这个命令适用于较小的DF,但是我们想要保存的一些DF是100 k行或更多。
然后,当我们尝试保存文件时,我们会收到此错误:
[Errno 95] Operation not supported
有人知道是什么原因吗?因为在线文档在这方面做得不好。
谢谢!
1条答案
按热度按时间k5hmc34c1#
根据官方Documentation,
从databrick 6.0及更高版本开始,FUSE v2不支持直接附加和随机写入。
解决方法可以是,首先将文件写入数据块本地磁盘,然后使用
dbutils.fs.mv()
或dbutils.fs.cp()
复制或移动到装载位置。跟随**@Alex OTT**的类似SO answer了解更多信息。
AFAIK,在大型 Dataframe 的情况下,使用panda保存到文件可能不是一个好的选择,因为我们的驱动程序节点应该有足够的RAM来存储整个大型 Dataframe ,否则它会使我们的驱动程序节点崩溃。
对于大型 Dataframe ,使用Pyspark保存到文件可能是更好的选择。使用
coalesce(1)
。但它将为输出文件给予一个随机名称,其中包含两个额外文件。要获得具有所需名称的单个文件,您可以通过**@analyticjeremy**执行此tutorial。