2009-04-24 22 views
0

Ich mag mich irren, aber alle (?) Beispiele, die ich mit Apache Hadoop gesehen habe, nehmen als Eingabe eine Datei im lokalen Dateisystem (zB org.apache.hadoop.examples.Grep)Hadoop: map/reduce von HDFS

Gibt es eine Möglichkeit zum Laden und Speichern der Daten auf dem Hadoop-Dateisystem (HDFS)? Zum Beispiel habe ich eine tabulatorgetrennte Datei namens 'stored.xls' auf HDFS mit hadoop-0.19.1/bin/hadoop dfs -put ~/local.xls stored.xls. Wie sollte ich die JobConf konfigurieren, um sie zu lesen?

Danke.

Antwort

0
 
JobConf conf = new JobConf(getConf(), ...); 
... 
FileInputFormat.setInputPaths(conf, new Path("stored.xls")) 
... 
JobClient.runJob(conf); 
... 

setInputPaths wird es tun.

+0

Dank, aber es löst eine Ausnahme zu sagen, dass „file: /home/me/workspace/HADOOP/stored.xls“ (dies ist ein lokaler Pfad) nicht existiert. Die Datei in HDFS befindet sich in "/user/me/stored.xls". Ich habe auch einen neuen Pfad ("/ user/me/stored.xls") ausprobiert und es funktioniert auch nicht. – Pierre

+0

Zunächst ist es seltsam, dass sich Hadoop über "file:" und nicht über "hdfs:" beschwert hat. Es könnte sein, dass Ihre hadoop-site.xml falsch konfiguriert ist. Und zweitens, wenn das immer noch nicht funktioniert, geben Sie mkdir ein und setzen stored.xls in das "input" -Verzeichnis (alles mit dem Befehl bin/hadoop fs). Und, neuer Pfad ("Eingabe") statt neuer Pfad ("stored.xls") – yogman

+0

Das Aufdecken Ihrer Befehlszeile zum Ausführen des Jobs würde nicht schaden. – yogman

1

Pierre, die Standardkonfiguration für Hadoop läuft im lokalen Modus und nicht im verteilten Modus. Sie müssen wahrscheinlich nur einige Einstellungen in Ihrer hadoop-site.xml ändern. Offenbar ist Ihr Standard-Dateisystem immer noch localhost, wenn es hdfs: // youraddress: yourport sein sollte. Sehen Sie sich Ihre Einstellung für fs.default.name an. Weitere Informationen finden Sie in der Setup-Hilfe unter Michael Noll's blog.

1

FileInputFormat.setInputPaths (conf, neuer Pfad ("hdfs: // hostname: port/user/me/stored.xls"));

wird dieser