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
不要写这些空文件?
答案 0 :(得分:0)
停止使用s3n,切换到s3a。它更快,实际上得到了支持。这将导致这个问题消失,以及阅读大型Parquet / ORC文件时出现的残酷性能问题。
此外,如果您的应用在S3中创建了数千个小文件,则会产生未来的性能问题:在S3上列出和打开文件的速度很慢。尝试将源数据组合成更大的柱状格式文件&使用框架所具有的任何SELECT机制来只读取你想要的位