如何高效读取100K张图像的Spark方法?

目前,我正在使用Spark进行图像分类编程。我需要将所有图像读取到内存中作为RDD,我的读取方法如下:

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

imag-dir 是HDFS上存储目标图像的目录。使用这种方法,所有图像将被加载到内存中,每张图像将被组织为“图像名称,图像内容”的对。然而,我发现这个过程非常耗时,有没有更好的方法将大规模图像数据集加载到Spark中?


回答:

我怀疑这可能是因为你在HDFS上有很多文件,这本身就是一个问题(所谓的‘小文件问题’)。这里你会找到一些解决这个问题的建议。

你可能还需要设置分区数量(wholetextFilesminpartitions参数)为一个合理的数字:至少是集群中核心数量的2倍(详细信息请看这里)。

但总的来说,除了上述两个建议之外,你加载图像的方式是可以的,并且不是你问题的所在(假设spark是你的Spark上下文)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注