Hadoop fs -bekommen nur bestimmte Dateien kopieren
Gibt es eine Möglichkeit, kopieren Sie nur bestimmte Dateien, sagen Sie basierend auf Dateityp mit fs -get-oder fs -copyToLocal? Hinweis: ich möchte diese rekursiv und durchqueren den gesamten cluster.
Es herausgefunden aber ich kann nicht die Antwort auf meine eigene Frage.
Hier ist, wie wir es getan haben. Gerade schrieb eine kurze shell-Skript.
mkdir /tmp/txt
for F in `hadoop fs -fs hdfs://namenode.mycluster -lsr /| grep '/*.txt$' | awk '{print $NF}';
do
hadoop fs -fs hdfs://namenode.mycluster -copyToLocal $F /tmp/las/
done
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist, wie wir es getan haben. Gerade schrieb eine kurze shell-Skript.
Können Sie geben den regulären Ausdruck ein, um Dateien zu kopieren. es gibt ein Beispiel hier auf der Befehlszeile verwenden, in hadoop. Dies nicht verwendet, aber es verwendet setzen, sollte das Verhalten identisch zu bekommen.
Etwas wie dieses :
hadoop fs -get out/*
http://prazjain.wordpress.com/2012/02/15/how-to-run-hadoop-map-reduce-program-from-command-line/
Hadoop bietet keine Unterstützung für die double-star-glob-notation im Wege, so gibt es keine out-of the box Weg, dies zu tun:
Können Sie jedoch Ihren eigenen code schreiben, um es zu tun - schauen Sie in die aktuelle Quelle für FsShell, und das paar, dass mit FileInputFormat ist listStatus Methode - was kann so konfiguriert werden, akzeptieren PathFilter. In diesem PathFilter Sie kann nur true zurück, wenn der Pfad von der Art der Datei, die Sie wünschen.