Hadoop流访问目录中的文件

时间:2014-07-04 14:03:26

标签: python hadoop hadoop-streaming

我希望访问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 )

2 个答案:

答案 0 :(得分:0)

是的,逻辑是有道理的。

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

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

答案 1 :(得分:0)

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