我有一个pyspark脚本,它从s3读取未分区的单个拼板文件,执行一些转换,并按照日期将其写回另一个s3桶。
我用s3a做读写。读取文件并执行转换是很好的,也没有问题。但是,当我尝试使用s3写入s3a并对其进行分区时,它会引发以下错误:
警告s3a.S3AFileSystem:找到文件(有/):真正的文件?不应该发生:folder1 1/output org.apache.hadoop.fs.FileAlreadyExistsException:不能为路径‘s3A://Bucket1/folder1 1/output’创建目录,因为它是一个文件。
im用于编写代码的部分如下所示,其中im试图附加到现有目录,但为新日期添加一个新分区:
output_loc = "s3a://bucket1/folder1/output/"
finalDf.write.partitionBy("date", "advertiser_id") \
.mode("append") \
.parquet(output_loc)我使用Hadoopv3.0.0和Spark2.4.1
有人在使用s3a而不是s3n时遇到过这个问题吗?顺便说一句,它在使用s3n的旧实例上工作得很好。
谢谢
发布于 2020-01-15 12:23:00
存储桶s3a://bucket1/folder1/output/中有一个带有尾随斜杠的条目,其大小大于0。S3A警告说,它不高兴,因为它被当作一个空的dir标记,一旦在下面添加文件,就有可能被删除。
添加对结果的跟踪;如果删除没有解决问题,那么hadoop可能是值得存档的
https://stackoverflow.com/questions/59720374
复制相似问题