在emr上运行spark作业,输出直接写入s3。我注意到每个s3目录路径(例如。 /the/s3/path
)包含一个名为 /the/s3/path_$folder$
. 这会导致使用spark重新加载数据时出现问题(这是parquet,spark会抱怨额外的文件等)。
我怎样才能阻止aws/不管它是什么创建这个标志?hadoop作业也经常发生这种情况,所以我不认为它是spark(尽管它使用hadoop fs的东西)。
在emr上运行spark作业,输出直接写入s3。我注意到每个s3目录路径(例如。 /the/s3/path
)包含一个名为 /the/s3/path_$folder$
. 这会导致使用spark重新加载数据时出现问题(这是parquet,spark会抱怨额外的文件等)。
我怎样才能阻止aws/不管它是什么创建这个标志?hadoop作业也经常发生这种情况,所以我不认为它是spark(尽管它使用hadoop fs的东西)。
1条答案
按热度按时间kupeojn61#
嗯,是的,我以前也收到过这些文件夹,但是它们不再出现了。。。我怀疑是因为我对
hadoopConfiguration
:除了将输出直接提交到
S3
,这些设置阻止了元数据文件的创建,而元数据文件显然没有任何实际用途,只是占用了大量的时间来创建。我还没有验证这些设置是否会起作用,但我强烈怀疑它们会起作用。总有一天我会查的,除非你比我先查到;)
编辑:
这个
DirectOuputCommitter
在spark 2.x中不再提供。避免spark2.x中对s3进行临时写入的方法是将此设置添加到Spark Conf
:(请注意,它不再设置在
hadoopConfiguration
). 然而,这并不能消除_$folder$
文件夹。我还没有解决如何在spark 2.x中禁用它们。。。