jbr*_*own 4 hadoop amazon-s3 amazon-web-services emr apache-spark
在 EMR 上运行 Spark 作业,并将输出直接写入 S3。我注意到每个 S3 目录路径(例如/the/s3/path)都包含一个名为 的标志文件/the/s3/path_$folder$。这会导致使用 Spark 重新加载数据时出现问题(它是镶木地板,并且 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")
Run Code Online (Sandbox Code Playgroud)
除了将输出直接提交到 之外S3,这些设置还阻止创建元数据文件,这些文件显然没有实际用途,而且只是占用大量时间来创建。
我还没有验证这些设置是否会产生影响,但我强烈怀疑它们会产生影响。有一天我可以检查一下,除非你抢先了我;)
编辑:
DirectOuputCommitterSpark 2.x 中不再可用。避免在 Spark 2.x 中临时写入 S3 的方法是将此设置添加到您的Spark Conf:
spark.conf.set("mapreduce.fileoutputcommitter.algorithm.version", "2")
Run Code Online (Sandbox Code Playgroud)
(请注意,它不再在 上设置hadoopConfiguration)。但是,这不会删除文件_$folder$夹。我还没有弄清楚如何在 Spark 2.x 中禁用它们......
| 归档时间: |
|
| 查看次数: |
2337 次 |
| 最近记录: |