由於我們需要在一堆文件中讀取到映射器,在非Hadoop的 環境中,我使用os.walk(dir)
和file=open(path, mode)
來讀取 中的每個文件。STDIN或文件作爲Hadoop環境中的映射器輸入?
然而,在Hadoop的環境,因爲我讀了HadoopStreaming轉換 文件輸入到減速機的映射,與CONVER標準輸出的標準輸入到文件 輸出,我有幾個問題如何輸入文件:
我們是否必須在mapper.py中設置STDIN的輸入,並讓 HadoopStreaming將hdfs輸入目錄中的文件轉換爲STDIN?
如果我想單獨讀取每個文件並解析每一行,如何在mapper.py中設置輸入文件的輸入方式 ?
我非Hadoop的環境套以前的Python代碼: 根目錄,文件在os.walk文件( '非HDFS的路徑') .....
然而,在Hadoop環境中,我需要將'非hdfs的路徑'更改爲 HDFS的路徑,其中我copyFromLocal爲,但我嘗試了許多沒有 的成功,例如os.walk('/user/hadoop/in')
- 這是我通過運行bin/hadoop dfs -ls,和os.walk('home/hadoop/files')
- 這個 是我在非Hadoop環境下的本地路徑,甚至是os.walk('hdfs:// host:fs_port/user/hadoop/in')
.. ..
任何人都可以告訴我,我是否可以通過在mapper.py中使用文件 操作從文件輸入或我必須從STDIN輸入?
謝謝。
嗨@JD Long,我在hdfs目錄中有很多csv文件,我想從目錄中讀取所有csv文件,你能建議我該怎麼做。我很困惑該怎麼做。正如我在本地從目錄讀取csv文件的腳本測試。如果我在服務器上運行它,它會在輸入流上工作,所以我讀取文件時發生異常(流式傳輸命令失敗)。我是新的python for hadoop,所以我不知道該怎麼做。請建議我該怎麼做 – MegaBytes
你試過了什麼?看看這個,然後嘗試破解一些東西。如果遇到困難,請將其形成StackOverflow問題。然後重複這個過程:http://blog.cloudera.com/blog/2013/01/a-guide-to-python-frameworks-for-hadoop/ –