Hadoop流访问目录中的文件

问题描述 投票:3回答:2

我想访问Hadoop中的一个目录(通过Python流)并循环遍历其图像文件,计算我的映射器中每个的哈希值。以下逻辑是否有意义(而不是硬编码,我可以将目录作为例如-input传递给Hadoop)吗?

lotsdir= 'hdfs://localhost:54310/user/hduser/randomimages/' 
import glob
path = lotsdir + '*.*'
files = glob.glob(path)
files.sort()

imagehashes={}
for fname in files:
    imagehashes[fname]=pHash.imagehash( fname )
python hadoop hadoop-streaming
2个回答
0
投票

是的,逻辑是有道理的。

但由于您的输入文件不是文本格式,因此很可能会出现性能问题,因此无法在HDFS上正确分割它们。

希望Hadoop提供多种方法来解决该问题。例如,您可以:


0
投票

您还可以尝试将图像文件内容打印为编码字符串,如下所示:[[1,2,3],[4,5,6]]变为1:2:3:4:5:6 in标准输入。然后你的映射器可以从标准输入读取并解码(因为你已经知道图像尺寸)它可以回到一个numpy数组(只有几行到数字 - extarction-ndarray-reshape)代码。这基本上成了你的形象。我正在开展一个类似的项目,并且遇到了这些问题。希望对你有效。

© www.soinside.com 2019 - 2024. All rights reserved.