数据块df.toPandas().toCsv()保存失败,原因是[Errno 95]操作不受支持

kmbjn2e3  于 2023-02-17  发布在  其他
关注(0)|答案(1)|浏览(229)

正如标题所说,当使用以下命令将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

有人知道是什么原因吗?因为在线文档在这方面做得不好。
谢谢!

k5hmc34c

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

相关问题