hadoop流媒体访问目录中的文件

ruyhziif  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(433)

我希望访问hadoop中的一个目录(通过python流)并循环遍历它的图像文件,计算Map器中每个文件的哈希值。下面的逻辑有意义吗(我可以把目录作为输入传递给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 )
xienkqul

xienkqul1#

是的,逻辑是有道理的。
但是您很可能会遇到性能问题,因为您的输入文件不是文本格式的,所以它们不会在hdfs上正确分割。
希望hadoop能提供几种方法来解决这个问题。例如,您可以:
将图像文件转换为sequencefile并存储到hdfs中
编写自己的inputformat、outputformat和recordreader,以便正确地拆分它们

vdzxcuhz

vdzxcuhz2#

您还可以尝试将图像文件内容打印为编码字符串,例如:[[1,2,3],[4,5,6]]在stdin中变成1:2:3:4:5:6。然后您的Map器可以从stdin读取并解码(因为您知道图像的尺寸)它返回到numpy数组(只需几行就可以对extarction和array reforme进行编号)代码。这基本上就是你的形象。我在做一个类似的项目,也面临着这些问题。希望对你有用。

相关问题