【发布时间】:2020-04-30 09:18:35
【问题描述】:
我有一个 pyspark 脚本,它从 s3 读取未分区的单个 parquet 文件,进行一些转换并写回按日期分区的另一个 s3 存储桶。
我正在使用 s3a 进行读写。读取文件并执行转换很好,没有问题。但是,当我尝试使用 s3a 写入 s3 并进行分区时,会引发以下错误:
WARN s3a.S3AFileSystem: Found file (with /): real file?不应该 发生:文件夹1/输出 org.apache.hadoop.fs.FileAlreadyExistsException:无法创建目录 对于路径 's3a://bucket1/folder1/output',因为它是一个文件。
我用来写的部分代码如下,我试图追加到现有目录但新日期的新分区:
output_loc = "s3a://bucket1/folder1/output/"
finalDf.write.partitionBy("date", "advertiser_id") \
.mode("append") \
.parquet(output_loc)
我正在使用 Hadoop v3.0.0 和 Spark 2.4.1
有没有人在使用 s3a 而不是 s3n 时遇到过这个问题。顺便说一句,它在使用 s3n 的旧实例上运行良好。
谢谢
【问题讨论】:
-
您是否尝试只给出没有 s3a 或 s3n 的 s3 路径?
-
仅尝试 s3 时会出错,找不到文件系统。然而,这不是使用 s3a 写入 s3 时的问题,这是现在推荐的方法
标签: apache-spark pyspark