Pyspark Dataframe到S3 Parquet文件错误

9avjhtql  于 2023-05-16  发布在  Spark
关注(0)|答案(1)|浏览(186)

我试图写Sparkdataframe到S3在Parquet格式使用下面的代码。但失败,出现以下错误:
23/05/08 16:32:58 WARN MultiObjectDeleteSupport:批量删除操作无法删除所有对象; failure count = 1 23/05/08 16:32:58 WARN MultiObjectDeleteSupport:拒绝访问:sparkbyexamples/:访问被拒绝3/05/08 16:33:00 ERROR FileFormatWriter:正在中止作业87 b 0 - 769 a9 f063507。org.apache.hadoop.util.DiskChecker$DiskErrorException:在org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(LocalDirAllocator.java:462)~[hadoop-client-API-3.3.3-amzn-2.jar:?]
所用代码:

spark_df.write.parquet("s3a://sparkbyexamples/parquet/people.parquet")

我对sparkbyexamples文件夹有读权限,对parquet子文件夹有写权限。我可以使用boto 3将CSV文件写入此路径。为什么我在父文件夹上出现访问错误?我正在尝试写入子文件夹。

hjzp0vay

hjzp0vay1#

这里有两个错误。
org.apache.hadoop.util.DiskChecker$DiskErrorException:没有临时目录到正在写入的缓冲区块。确保您已将spark.hadoop.fs.s3a.buffer.dir设置为本地文件系统中有空间的路径。
对于删除,这是因为当一个文件被创建时,它会在它上面发送一个DELETE,以消除任何虚假的/目录标记。

  • 这只是一个警告而不是错误(也许它只应该警告一次,FWIW)
  • 您可以使用关闭标记删除
spark.hadoop.fs.s3a.marker.retention keep

这样做可以保存IO和版本化存储桶、墓碑标记。现在该功能已经推出了一段时间,它应该是默认打开的。它还没有完成的唯一原因是它不向后兼容旧版本试图写入相同的目录(重命名和删除,特别是)

相关问题