簡體   English   中英

Hadoop流訪問目錄中的文件

[英]Hadoop streaming accessing files in a directory

我想訪問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 )

是的,邏輯是有道理的。

但由於您的輸入文件不是文本格式,因此很可能會出現性能問題,因此無法在HDFS上正確分割它們。

希望Hadoop提供多種方法來解決該問題。 例如,您可以:

您還可以嘗試將圖像文件內容打印為編碼字符串,如下所示:[[1,2,3],[4,5,6]]變為1:2:3:4:5:6 in標准輸入。 然后你的映射器可以從標准輸入讀取並解碼(因為你已經知道圖像尺寸)它可以回到一個numpy數組(只有幾行到數字 - extarction-ndarray-reshape)代碼。 這基本上成了你的形象。 我正在開展一個類似的項目,並且遇到了這些問題。 希望對你有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM