Spark saveAsTextFile将空文件 - <directory> _ $ folder $写入S3

时间:2017-12-26 02:07:07

标签: hadoop apache-spark amazon-s3 apache-spark-sql

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不要写这些空文件?

1 个答案:

答案 0 :(得分:0)

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

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