我在使用 pyspark 将文本文件保存到 S3 时遇到问题。我能够保存到 S3,但它首先上传到 S3 上的 _temporary,然后继续复制到预期位置。这会显着增加作业运行时间。我试图编译一个 DirectFileOutputComitter,它应该直接写入预期的 S3 url,但我无法让 Spark 使用此类。
示例:
someRDD.saveAsTextFile("s3a://somebucket/savefolder")
这创建了一个
s3a://somebucket/savefolder/_temporary/
随后写入的目录,之后 S3 复制操作将文件移回
s3a://somebucket/savefolder
我的问题是是否有人拥有 DirectFileOutputCommiter 的工作 jar,或者是否有人有解决此问题的经验。
相关链接:
- https://issues.apache.org/jira/browse/HADOOP-10400
- https://gist.github.com/aarondav/c513916e72101bbe14ec
- https://mail-archives.apache.org/mod_mbox/spark-user/201503.mbox/%3C029201d06334 $a0871180$e1953480$@gmail.com%3E
- http://tech.grammarly.com/blog/posts/Petabyte-Scale-Text-Processing-with-Spark.html
最佳答案
我能够通过使用 Databricks 的 DirectOutputCommitter 修补 Hadoop 2.7.2 并将修补后的 jar 部署到我的 spark 实例来解决这个问题。下面的链接是带有修补后的 jar 的 git 存储库。
关于java - Spark 1.6 DirectFileOutputCommitter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35209603/