Spark 写入镶木地板作业已完成但延迟很长时间才能开始新作业

Spark write parquet job completed but have a long delay to start new job

我是 运行 AWS EMR 上的 Spark 2.4.4,在将 parquet 文件写入 S3 后遇到了很长的延迟。我检查了 S3 写入过程应该在几秒钟内完成(在 S3 中找到数据文件和_success 文件)。但它仍然延迟了大约 5 分钟才能开始以下工作。

我看到有人说这个叫"Parquet Tax"。我已经尝试了这些文章中建议的修复方法,但仍然无法解决问题。谁能帮帮我?非常感谢。

这是重命名提交者必须通过复制和删除文件来伪造重命名的开销。

切换到更高性能的提交者,例如 ASF Spark 的 "zero rename committer" 或 EMR 克隆,"fast spark committer"

您可以从 spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version 2.

开始

您可以使用以下任一方法设置此配置:

  • 启动集群时,可以将 spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version 2 放入 Spark 配置中。
  • spark.conf.set("mapreduce.fileoutputcommitter.algorithm.version", "2")
  • 使用DatasetAPI写入数据时,可以在option中设置,即dataset.write.option("mapreduce.fileoutputcommitter.algorithm.version", "2").