Spark 如何高效读取 100K 图片?

How does Spark read 100K images effeciently?

目前,我正在使用 Spark 编写一些关于图像分类的程序。我需要将所有图像作为 RDD 读入内存,我的方法如下:

val images = spark.wholeTextFiles("hdfs://imag-dir/")  

imag-dir是hdfs上的目标图片存放目录。使用此方法,所有图像都将加载到内存中,并且每张图像将组织为 "image name, image content" 对。但是,我发现这个过程很耗时,有没有更好的方法将大图像数据集加载到spark中?

我怀疑这可能是因为您在 HDFS 上有很多 文件,这是一个问题('small files problem')。 Here 您会发现一些解决问题的建议。

您可能还想将分区数量(wholetextFilesminpartitions 参数)设置为合理的数量:至少是集群中核心数量的 2 倍(查看 there了解详情)。

但总而言之,除了上述 2 个想法之外,您加载这些想法的方式还可以,不是 您的问题所在(假设 spark 是您的Spark 上下文)。