2013-05-31 3 views
6

Есть ли способ загрузить файл из HDFS с помощью API-интерфейсов WebHDFS REST? Самое близкое, что я достиг, это использовать открытую операцию для чтения файла и сохранения содержимого.Есть ли способ загрузить файл HDFS с использованием API-интерфейса WebHDFS REST?

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

Есть ли API, который позволит мне загрузить файл напрямую, без необходимости открывать его? Я прошел через официальный document и попытался Google, а также, но не смогли найти ничего. Может ли кто-нибудь указать мне в правильном направлении или предоставить мне несколько указателей?

Благодарим вас за ваше драгоценное время.

+0

Что не так с подходом вы описываете ? Вам нужно будет прочитать файл в какой-то момент, если вы хотите загрузить его локально. –

+0

Благодарим вас за ответ. Я просто хочу загрузить файл, как есть, и сохранить его в каталог на моем местном FS на данный момент. В настоящий момент чтение файла не является моим намерением. Кроме того, если я следую приведенному выше подходу, у меня будет файл с заголовком, а также «HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 218 Сервер: Jetty (6.1. 26) « – Tariq

+0

API WebHDFS предназначен для использования в программировании, поэтому использование OPEN так же близко, как и если вы хотите его использовать ... для создания файла вам все еще нужен код. –

ответ

6

Возможно, вы использовали API DataNode для этого (по умолчанию на порту 50075), он поддерживает команду streamFile, которую вы могли бы использовать. Использование wget это будет выглядеть примерно так:

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

Обратите внимание, что эта команда должна быть выполнена на самом DataNode, а не на NameNode!

С другой стороны, если вы не знаете, какой DataNode ударить вы можете попросить JobTracker и он будет перенаправлять вас к правильному DataNode с этим URL:

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

Благодарим вас за ответ sir. Я пробовал это однажды, но это давало мне «ERROR 500: Файл не существует: /.». – Tariq

+0

Можете ли вы показать мне, какую команду вы побежали? –

+0

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