2014-04-04 6 views
9

Ich habe eine große Datei in hdfs bigfile.txt. Ich möchte die ersten 100 Zeilen davon in eine neue Datei auf hdfs kopieren. Ich habe versucht, den folgenden Befehl ein:Wie werden die ersten Zeilen einer großen Datei in hadoop in eine neue Datei kopiert?

hadoop fs -cat /user/billk/bigfile.txt |head -100 /home/billk/sample.txt 

Es gab mir eine „Katze: nicht in der Lage Ausgabestrom zu schreiben“ Fehler. Ich bin auf Hadoop 1.

Gibt es andere Möglichkeiten, dies zu tun? (Anmerkung: Kopieren 1. 100 Linie auf lokale oder eine andere Datei auf hdfs ist OK)

Antwort

11

Like this -

hadoop fs -cat /user/billk/bigfile.txt | head -100 | hadoop -put - /home/billk/sample.txt 

Ich glaube, die „Katze: nicht in der Lage Ausgabestrom zu schreiben“ ist, nur weil Kopf geschlossen der Stream nachdem er sein Limit gelesen hat. sehen Sie diese Antwort über Kopf für hdfs - https://stackoverflow.com/a/19779388/3438870

+0

die Probe lokal zu kopieren, verwenden Sie diese: hadoop fs -cat/path/to/hdfsfile | Kopf -100 | hadoop fs -get Pfad/zu/local/sample1 – Adrian

+0

Wenn Sie die Ergebnisse lokal wollen, können Sie es einfach in eine Datei umleiten, anstatt durch hdfs hadoop fs -cat /user/billk/bigfile.txt | head -100> local/sample.txt – Scott

+0

@Scott dies führt auch zu dem 'cat: unable to output stream' Problem –

Verwandte Themen