2011-07-20 3 views
6

J'essaie d'exécuter un travail sur Elastic MapReduce (EMR) avec un fichier jar personnalisé. J'essaie de traiter environ 1000 fichiers dans un seul répertoire. Lorsque je soumets mon travail avec le paramètre s3n://bucketname/compressed/*.xml.gz, j'obtiens une erreur "0 fichiers correspondants". Si je passe juste le chemin absolu à un fichier (par exemple s3n://bucketname/compressed/00001.xml.gz), il fonctionne bien, mais un seul fichier est traité. J'ai essayé d'utiliser le nom du répertoire (s3n://bucketname/compressed/), en espérant que les fichiers à l'intérieur seront traités, mais cela passe juste le répertoire au travail.Plusieurs fichiers en entrée sur Amazon Elastic MapReduce

En même temps, j'ai une installation hadoop locale plus petite. En cela, quand je passe mon travail avec des caractères génériques (/path/to/dir/on/hdfs/*.xml.gz), cela fonctionne très bien et tous les 1000 fichiers sont répertoriés correctement.

Comment puis-je obtenir EMR pour lister tous mes fichiers?

+0

Alternativement, comment puis-je lister les fichiers dans un répertoire de s3 à partir du code? Je peux ensuite générer les chemins à partir de ces fichiers. –

+1

Cela fonctionne maintenant! Il y avait un fichier vide appelé 'compressed' dans le même compartiment. Dès que j'ai supprimé le fichier vide, le programme a commencé à fonctionner. –

Répondre

2

Je ne sais pas comment DME répertorie tous les fichiers, mais voici un morceau de code qui fonctionne pour moi:

 FileSystem fs = FileSystem.get(URI.create(args[0]), job.getConfiguration()); 
     FileStatus[] files = fs.listStatus(new Path(args[0])); 
     for(FileStatus sfs:files){ 
      FileInputFormat.addInputPath(job, sfs.getPath()); 
     } 

Il liste tous les fichiers qui se trouvent dans le répertoire d'entrée, et vous pouvez faire à ceux que vous voulez

+1

Merci pour votre réponse. Le problème a été corrigé plus tard. Il y avait un fichier vide appelé compressé dans le même compartiment. Dès que j'ai supprimé le fichier vide, le programme a commencé à fonctionner. –

+0

+1: cela m'aide beaucoup. Merci! – jldupont

Questions connexes