使用Apache Spark获取S3存储桶中所有文件名的列表

时间:2015-12-01 14:36:26

标签: java amazon-s3 apache-spark

我们有一个包含大量文件的S3存储桶。文件列表每天都在增长。我们需要一种方法来获取文件列表并根据文件名中存在的元数据生成计数(分组依据)。我们不需要这个内容。这些文件很大并且具有二进制内容,因此下载它们并不是最佳的。

我们目前正在使用S3 Java API获取文件名列表,将它们存储在列表中,然后使用Spark进行处理。目前这种方法有效,因为文件数量达到数十万,但不能扩展以满足我们未来的需求。

有没有办法使用Spark进行整个处理?

1 个答案:

答案 0 :(得分:0)

我通过修改FileInputDStream达到了类似的效果,而不是将文件内容加载到RDD中,而只是根据文件名创建RDD。

如果您实际上不想将数据本身读入RDD,或者不希望将文件名传递给外部命令作为步骤之一,则可以提高性能。

只需更改filesToRDD(..),以使其对文件名进行RDD,而不是将数据加载到RDD中。

请参阅: https://github.com/HASTE-project/bin-packing-paper/blob/master/spark/spark-scala-cellprofiler/src/main/scala/FileInputDStream2.scala#L278