spark savemode.append 文件已存在

spark savemode.append file already exists

我们在 Amazon EMR (5.13) 的 Spark 作业中写入 S3 时遇到罕见问题。这是日志的一部分:

Caused by: org.apache.spark.SparkException: Job aborted due to stage failure: Task 3 in stage 2.0 failed 4 times, most recent failure: Lost task 3.3 in stage 2.0 
...
Caused by: java.io.IOException: File already exists:s3://*****/part-00003-58fe4151-60d6-4605-b971-21dbda31678b-c000.snappy.orc
    at com.amazon.ws.emr.hadoop.fs.s3n.S3NativeFileSystem.create(S3NativeFileSystem.java:507)
...

看起来很奇怪,因为我们使用SaveMode.Append来保存数据集:

input.write().mode(SaveMode.Append).orc(path);

我用谷歌搜索了一下,发现了几个相同的问题(请看 ),但我们不使用 spark.speculation,所以我不知道发生了什么。

任何人都可以建议我在哪里可以找到这个问题的根源吗?

EMR 代码已关闭,因此我无法对其内部结构发表评论。我确实知道,如果没有一致的层,针对 S3 提交工作很容易出现罕见的失败,要么是可见的(此处),要么只是丢失数据,因为假目录重命名在列出路径下的内容时会丢失新文件。

尝试使用本地 hdfs 作为目标,或使用一致的 EMR。