2013-05-31 90 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

相关问题