Scala 如何减少spark中的多个小文件加载时间

Scala 如何减少spark中的多个小文件加载时间,scala,apache-spark,hadoop2,Scala,Apache Spark,Hadoop2,我在给定的HDFS位置有多个拼花格式的小文件(在给定的一个月内,计数是递增的,因为我们在给定的一个月内每天收到两个或更多文件)。当我在SPARK 2.1中尝试从HDFS位置读取文件时,读取这些文件所花费的时间会更多,并且当更多的小文件添加到给定位置时,所花费的时间会增加 由于文件很小,我不想在HDFS中进一步分区 分区是通过在HDFS上创建目录来创建的,然后文件被放置在这些目录中。 文件格式为拼花地板 是否有任何其他格式或流程可以一次读取所有小文件,以便减少小文件的读取时间 注: 1) 尝试创建

我在给定的HDFS位置有多个拼花格式的小文件(在给定的一个月内,计数是递增的,因为我们在给定的一个月内每天收到两个或更多文件)。当我在SPARK 2.1中尝试从HDFS位置读取文件时,读取这些文件所花费的时间会更多,并且当更多的小文件添加到给定位置时,所花费的时间会增加

由于文件很小,我不想在HDFS中进一步分区

分区是通过在HDFS上创建目录来创建的,然后文件被放置在这些目录中。 文件格式为拼花地板

是否有任何其他格式或流程可以一次读取所有小文件,以便减少小文件的读取时间

注:
1) 尝试创建一个可以将所有小文件合并到一个文件的程序将在我的全面SLA中添加额外的处理,以完成我的过程,因此我将保留此作为我的最后选项。

如果您不想合并文件,首先应该考虑重新设计上游过程来限制创建文件的数量。例如,如果producer是Spark,您可以在写入之前对数据进行
合并
重新分区
()

除此之外(或者合并为单独的步骤),您没有什么可以做的。读取小文件是非常昂贵的。调整:

打开文件的估计成本(以字节数衡量)可以在同一时间进行扫描。在将多个文件放入分区时使用此选项。最好是高估,这样,具有小文件的分区将比具有大文件的分区(先计划)更快

在某种程度上可能会有所帮助,但我不希望出现奇迹。

请尝试wholeTextFiles! 这适用于许多小文件