2013-05-31 9 views
6

Gibt es eine Möglichkeit, eine Datei von HDFS mit Hilfe der WebHDFS-REST-API herunterzuladen? Am nächsten komme ich mit der Operation open, um die Datei zu lesen und den Inhalt zu speichern.Gibt es eine Möglichkeit, eine HDFS-Datei mit der WebHDFS-REST-API herunterzuladen?

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

Gibt es eine API, die mir die Datei direkt es ohne herunterladen können öffnen? Ich ging durch die offizielle document und versuchte Google als gut, aber ich konnte nichts finden. Könnte mir jemand in die richtige Richtung zeigen oder mir ein paar Hinweise geben?

Vielen Dank für Ihre wertvolle Zeit.

+0

Was mit dem Ansatz falsch ist Sie beschreiben ? Sie müssen die Datei trotzdem lesen, wenn Sie sie lokal herunterladen möchten. –

+0

Vielen Dank für die Antwort Sir. Ich möchte nur die Datei wie sie ist herunterladen und sie in einem Verzeichnis auf meinem lokalen FS ab sofort speichern. Das Lesen der Datei ist in diesem Moment nicht meine Absicht. Wenn ich dem obigen Ansatz folge, würde ich am Ende eine Datei mit der Überschrift "HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 218 Server: Jetty (6.1. 26) " – Tariq

+0

Die webHDFS-API ist für den programmatischen Gebrauch, also OPEN ist so nah wie es geht, wenn Sie es verwenden möchten ... Sie benötigen noch etwas Code, um die Datei zu erstellen. –

Antwort

6

Sie könnten wahrscheinlich die DataNode-API dafür verwenden (standardmäßig auf Port 50075), sie unterstützt einen streamFile Befehl, den Sie nutzen könnten. Mit wget Dies würde in etwa so aussehen:

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

Beachten Sie, dass dieser Befehl auf dem DataNode ausgeführt werden muss, selbst, nicht auf dem NameNode!

Alternativ, wenn Sie nicht wissen, welche Sie zu schlagen DataNode die Jobtracker fragen konnte, und es wird Ihnen auf der rechten Seite DataNode mit dieser URL umleiten:

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

danke für die Antwort Sir. Ich hatte das einmal versucht, aber es gab mir "Fehler 500: Datei existiert nicht: /.". – Tariq

+0

Können Sie mir zeigen, welchen Befehl Sie ausgeführt haben? –

+0

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

Verwandte Themen