2013-05-31 32 views
6

有沒有什麼辦法可以使用WebHDFS REST API從HDFS下載文件呢?我最近接觸到的是使用open操作來讀取文件並保存內容。有什麼方法可以使用WebHDFS REST API下載HDFS文件?

curl -i -L "http://localhost:50075/webhdfs/v1/demofile.txt?op=OPEN" -o ~/demofile.txt 

有沒有可以讓我直接下載文件,而無需打開任何API?我通過官方document去,並試圖谷歌一樣好,但找不到任何東西。有人能指出我正確的方向還是給我提供一些指引?

非常感謝您寶貴的時間。

+0

有什麼不對您所描述的方法?無論如何,如果你想在本地下載,你需要閱讀文件。 –

+0

謝謝您的答覆先生。我只是想按照原樣下載文件,並將其保存到本地FS的目錄中。讀此文件目前不是我的意圖。此外,如果我遵循上面的方法,我最終會得到一個包含頭文件的文件。「HTTP/1.1 200 OK Content-Type:application/octet-stream Content-Length:218 Server:Jetty(6.1。 26)「 – Tariq

+0

webHDFS API是爲編程使用的,所以如果你想使用它,使用OPEN就會盡可能地接近它......你仍然需要一些代碼來創建文件。 –

回答

6

您可能可以使用DataNode API(端口50075上的默認值),它支持您可以利用的streamFile命令。使用wget這會看起來像:

wget http://$datanode:50075/streamFile/demofile.txt -O ~/demofile.txt 

注意,這個命令需要在數據管理部本身執行,而不是在NameNode的!

另外,如果你不知道哪個數據節點來打你能問的JobTracker,它會重定向到這個網址的使用數據節點:

http://$namenode:50070/data/demofile.txt 
+0

謝謝您的答覆先生。我曾嘗試這一次,但它給了我「錯誤500:文件不存在:/。」。 – Tariq

+0

你能告訴我你跑的是什麼命令嗎? –

+0

wget http:// localhost:50075/streamFile?filename =/demofile.txt -O〜/ demofile.txt – Tariq

相關問題