2014-01-05 16 views
6

Ich möchte ein bestimmtes Muster von Dateien innerhalb von hdfs an einen anderen Ort im selben hdfs-Cluster kopieren. Die dfs Schale scheint nicht in der Lage zu sein, dies zu handhaben: kopiert noch auch keine Dateien:Hadoop HDFS-Kopie mit Platzhaltern?

hadoop dfs -cp /tables/weblog/server=jeckle/webapp.log.1* /tables/tinylog/server=jeckle/ 

Es wird kein Fehler zurückgegeben.

Antwort

8

Sie doppelte Anführungszeichen mit Ihrem Pfad verwenden müssen, die Platzhalter enthält, wie folgt aus:

hdfs fs -cp "/path/to/foo*" /path/to/bar/ 
+0

Neugierig - wie kann das funktionieren? Die Shell erweitert das "*", bevor hds es überhaupt sieht. Meinst Du * single * Zitat? – javadba

+0

ist es egal über beide Zitat. Das Zitat nur sagen shell NICHT erweitern den Platzhalter anstelle von einzelnen Parameter übergeben an hdfs Befehl. Ich versuche beide Zitat es funktioniert. – MoreFreeze

+0

Ja, Sie haben Recht. Ich habe vergeben. – javadba

1

Zuerst wird HDFS-Kopie mit Wildcards unterstützt. Zweitens ist die Verwendung von hadoop dfs veraltet, verwenden Sie lieber hadoop fs oder hdfs dfs stattdessen. Wenn Sie sicher sind, dass der Vorgang nicht erfolgreich war (obwohl es erfolgreich zu sein scheint), können Sie die Protokolldateien von namenode auschecken, um zu sehen, was falsch ist.

+2

Wie in der OP, keine Dateien werden mit dem angegebenen Platzhalter kopiert. Wenn Sie angeben, dass "Wildcards unterstützt werden", demonstrieren Sie bitte. – javadba

+0

, weil ich gerade den gleichen Befehl wie Ihr auf meinen Clustern versuchte und es sowohl für 2.1 als auch für 0.23.9 funktioniert. Ernsthaft, bitte überprüfen Sie Ihre namenode Protokolle – zhutoulala

0

Interessant. Dies ist, was ich in meiner lokalen VM mit Hadoop 0.18.0 bekomme. Welche Version verwendest du? Ich kann auf 1.2.1 versuchen auch

[email protected]:~$ hadoop fs -ls /user/hadoop-user/testcopy 
[email protected]:~$ hadoop dfs -cp /user/hadoop-user/input/*.txt /user/hadoop-user/testcopy/ 
[email protected]:~$ hadoop fs -ls /user/hadoop-user/testcopy 
Found 2 items 
-rw-r--r-- 1 hadoop-user supergroup   79 2014-01-06 04:35 /user/hadoop-user/testcopy/HelloWorld.txt 
-rw-r--r-- 1 hadoop-user supergroup  140 2014-01-06 04:35 /user/hadoop-user/testcopy/SampleData.txt 
+0

Sie laufen sehr alte Version von Hadoop .. aber auch in diesem Fall wäre es wahrscheinlich nicht wichtig. Ich bin auf 1.2.1 – javadba

+0

Versucht 1.2.1 und es funktioniert auch so. Allerdings habe ich dies gefunden [Link] (http://wiki.apache.org/hadoop/FAQ#Wildcard_characters_doesn.27t_work_correctly_in_FsShell.) Bitte überprüfen Sie. –

0

Diese beiden für mich gearbeitet:

~]$ hadoop fs -cp -f /user/cloudera/Dec_17_2017/cric* /user/cloudera/Dec_17_2017/Dec_18 
~]$ hadoop fs -cp -f "/user/cloudera/Dec_17_2017/cric*" /user/cloudera/Dec_17_2017/Dec_18 

Ich denke, besser Weg ist, dass nicht doppelt/single ("/ ') zitiert.