hadoop - 停止 hadoop/EMR/AWS 创建带有 _$folder$ 扩展名的 S3 路径

标签 hadoop amazon-web-services amazon-s3 apache-spark emr

在 EMR 上运行 spark 作业,输出直接写入 S3。我注意到每个 S3 目录路径(例如 /the/s3/path)都包含一个名为 /the/s3/path_$folder$ 的标志文件。这导致使用 spark 重新加载数据时出现问题(它是 Parquet ,spark 提示额外的文件等)。

我怎样才能阻止 AWS/无论它是什么来创建这个标志?它过去也发生在 hadoop 作业中,所以我不认为它是 spark(尽管它使用 hadoop FS 的东西)。

最佳答案

嗯,是的,我以前也获取过这些文件夹,但是它们不再出现了...我怀疑是因为我对 hadoopConfiguration 进行了这些更改:

sc.hadoopConfiguration.set("spark.sql.parquet.output.committer.class","org.apache.spark.sql.parquet.DirectParquetOutputCommitter")
sc.hadoopConfiguration.set("mapreduce.fileoutputcommitter.marksuccessfuljobs", "false")
sc.hadoopConfiguration.set("parquet.enable.summary-metadata", "false")

除了将输出直接提交到 S3 之外,这些设置还阻止了元数据文件的创建,这些文件显然无论如何都没有实际用处,只会占用大量时间来创建。

我还没有证实这些设置会产生影响,但我强烈怀疑它们会产生影响。我可以在这些日子里检查它,除非你先于我;)

编辑:

DirectOuputCommitter 在 Spark 2.x 中不再可用。在 Spark 2.x 中避免临时写入 S3 的方法是将此设置添加到您的 Spark Conf:

spark.conf.set("mapreduce.fileoutputcommitter.algorithm.version", "2")

(请注意,它不再在 hadoopConfiguration 上设置)。但是,这不会删除_$folder$ 文件夹。我还没有弄清楚如何在 Spark 2.x 中禁用它们...

关于hadoop - 停止 hadoop/EMR/AWS 创建带有 _$folder$ 扩展名的 S3 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35554420/

相关文章:

java - 如何修复 Hadoop : the Definitive Guide? 中 Hive UDAF 示例的 NoMatchingMethodException

java - SQL错误:java.io.IOException:java.lang.IllegalArgumentException:bucketId超出范围:-1

scala - 在 EMR 中使用 Spark Scala 获取 S3 对象大小(文件夹、文件)

heroku - 如何在不使用 gradle publish 命令的情况下发布 Gradle 工件

object - 如何从 s3 url 获取文件(前 n 个字节)

amazon-web-services - S3中的前缀是什么意思

hadoop - 我有CSV和TSV的10个文件。我想使用Apache Hadoop中的MapReduce获得输出什么是CSV和TSV数据

java - 程序hadoop编译时访问报错

wordpress - 在 AWS Elastic Beanstalk 上使用 Wordpress CMS - 部署时遇到问题(页面未加载)

swift - 如何使用 AWSS3TransferUtility 将带有用户元数据的音频文件上传到 S3