Spark 1.6 DirectFileOutputCommitter

Spark 1.6 DirectFileOutputCommitter

我在使用 pyspark 将文本文件保存到 S3 时遇到问题。我能够保存到 S3,但它首先上传到 S3 上的 _temporary,然后继续复制到预期位置。这会显着增加作业 运行 时间。我试图编译一个 DirectFileOutputComitter,它应该直接写入预期的 S3 url,但我无法让 Spark 使用这个 class.

示例:

someRDD.saveAsTextFile("s3a://somebucket/savefolder")

这会创建一个

s3a://somebucket/savefolder/_temporary/

随后写入的目录,之后 S3 复制操作将文件移回

s3a://somebucket/savefolder

我的问题是是否有人拥有 DirectFileOutputCommiter 的工作 jar,或者是否有人有解决此问题的经验。

相关链接:

  1. https://issues.apache.org/jira/browse/HADOOP-10400
  2. https://gist.github.com/aarondav/c513916e72101bbe14ec
  3. https://mail-archives.apache.org/mod_mbox/spark-user/201503.mbox/%3C029201d06334$a0871180$e1953480$@gmail.com%3E
  4. http://tech.grammarly.com/blog/posts/Petabyte-Scale-Text-Processing-with-Spark.html

我能够通过使用 Databricks 的 DirectOutputCommitter 修补 Hadoop 2.7.2 并将修补后的 jar 部署到我的 spark 实例来解决这个问题。下面的链接是一个 git 带有补丁 jar 的 repo。

Github Link