2011-07-20 17 views
6

Özel bir jar ile Elastic MapReduce (EMR) üzerinde bir iş çalıştırmaya çalışıyorum. Tek bir dizinde 1000 dosya hakkında işlem yapmaya çalışıyorum. İşimi s3n://bucketname/compressed/*.xml.gz parametresiyle gönderdiğimde, "eşleşen 0 dosya" hatası alıyorum. Bir dosyanın mutlak yolunu (ör. s3n://bucketname/compressed/00001.xml.gz) iletirseniz, düzgün çalışır, ancak yalnızca bir dosya işlenir. İçindeki dosyaların işleneceğini umarak dizinin adını (s3n://bucketname/compressed/) kullanmayı denedim, ancak bu yalnızca dizini işe geçiriyor.Amazon Elastic'te girdi olarak birden fazla dosya MapReduce

Aynı zamanda, daha küçük bir yerel hadoop kurulumuna sahibim. Bu, işimi joker karakterleriyle (/path/to/dir/on/hdfs/*.xml.gz) geçirdiğimde, iyi çalışıyor ve tüm 1000 dosyalar doğru listeleniyor.

Tüm dosyalarımı listelemek için EMR'yi nasıl alabilirim?

+0

Yapacağınız her şeye ne yaparsanız, s3'deki bir dizindeki dosyaları nasıl koddan listeleyebilirim? Daha sonra bu dosyalardan yollar üretebilirim. –

+1

Şimdi çalışıyor! Aynı pakette 'sıkıştırılmış 'adı verilen boş bir dosya vardı. Boş dosyayı sildikten hemen sonra program çalışmaya başladı. –

cevap

2

Ben EMR tüm dosyaları listeler, ama burada benim için çalışan bir kod parçası nasıl bilmiyorum:

 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()); 
     } 

Girdi dizinde bulunan tüm dosyaları listeler, ve mümkün

+1

Cevabınız için teşekkür ederiz. Sorun daha sonra düzeltildi. Aynı kovada sıkıştırılmış olarak adlandırılan boş bir dosya vardı. Boş dosyayı sildikten hemen sonra program çalışmaya başladı. –

+0

+1: Bu bana çok yardımcı oluyor. Teşekkürler! – jldupont

İlgili konular