2009-04-24 11 views
0

Je peux me tromper, mais tous les exemples que je l'ai vu avec Apache Hadoop prend en entrée un fichier stocké sur le système de fichiers local (par exemple org.apache.hadoop.examples.Grep)Hadoop: (?) Map/reduce de HDFS

est-il un moyen de charger et enregistrer les données sur le système de fichiers Hadoop (HDFS)? Par exemple, j'ai mis un fichier délimité par des tabulations nommé «stored.xls» sur HDFS en utilisant hadoop-0.19.1/bin/hadoop dfs -put ~/local.xls stored.xls. Comment dois-je configurer le JobConf pour le lire?

Merci.

Répondre

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

setInputPaths le fera.

+0

Merci, mais il jette une exception en disant que « fichier: /home/me/workspace/HADOOP/stored.xls » (ce qui est un chemin d'accès local) n'existe pas. Le fichier sur HDFS se trouve dans '/user/me/stored.xls'. J'ai aussi essayé un nouveau chemin ("/ user/me/stored.xls") et ça ne marche pas aussi. – Pierre

+0

Tout d'abord, il est étrange que Hadoop se soit plaint de "file:" plutôt que de "hdfs:". Si peut-être que votre hadoop-site.xml est mal configuré. Et, deuxièmement, si cela ne fonctionne toujours pas, entrez mkdir et mettez stored.xls dans le répertoire "input" (tous avec la commande bin/hadoop fs). Et, nouveau chemin (« entrée ») au lieu d'un nouveau chemin (« stored.xls ») – yogman

+0

Révéler votre ligne de commande pour exécuter le travail ne serait pas mal. – yogman

1

Pierre, la configuration par défaut pour Hadoop est de fonctionner en mode local, plutôt qu'en mode distribué. Vous avez probablement besoin de simplement modifier une configuration dans votre hadoop-site.xml. Il semble que votre système de fichiers par défaut soit toujours localhost, alors qu'il devrait être hdfs: // youraddress: yourport. Examinez votre paramètre pour fs.default.name et consultez également l'aide à la configuration au Michael Noll's blog pour plus de détails.

1

FileInputFormat.setInputPaths (conf, nouveau chemin ("HDFS: // nom d'hôte: port/user/Me/stored.xls"));

Cela fera

Questions connexes