Spark saveAsTextFile写入空文件 - _ $ folder $到S3

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark saveAsTextFile写入空文件 - _ $ folder $到S3相关的知识,希望对你有一定的参考价值。

rdd.saveAsTextFile("s3n://bucket-name/path)正在创建一个文件夹名为空的文件 - [folder-name]_$folder$好像这个空文件被hadoop-aws jar (of org.apache.hadoop)用来模仿S3文件系统作为hadoop文件系统。

但是,我的应用程序将数千个文件写入S3。由于saveAsTextFile创建文件夹(从给定路径)来写入数据(来自rdd),我的应用程序最终创建了数千个这些空文件 - [directory-name]_$folder$

有没有办法让rdd.saveAsTextFile不写这些空文件?

答案

停止使用s3n,切换到s3a。它更快,实际支持。这将使这个问题消失,以及阅读大型Parquet / ORC文件的残余性能问题。

此外,如果您的应用在S3中创建了数千个小文件,则会产生未来的性能问题:在S3上列出和打开文件的速度很慢。尝试将源数据组合成更大的列式格式文件,并使用框架所具有的任何SELECT机制来只读取您想要的位

以上是关于Spark saveAsTextFile写入空文件 - _ $ folder $到S3的主要内容,如果未能解决你的问题,请参考以下文章

Spark 'saveAsTextFile' 到 S3:无法控制带有 'coalesce' 的文件数量

Spark SQL - 如何将 DataFrame 写入文本文件?

如何从 spark rdd map 和 reduce 操作写入单个文件

将 Spark RDD 作为文本文件写入 S3 存储桶

spark中saveAsTextFile如何最终生成一个文件

spark中saveAsTextFile如何最终生成一个文件