2011-07-20 9 views
6

カスタムJARを使用してElastic MapReduce(EMR)でジョブを実行しようとしています。私は約1000のファイルを1つのディレクトリで処理しようとしています。パラメータs3n://bucketname/compressed/*.xml.gzでジョブを送信すると、「一致する0ファイル」エラーが発生します。ファイルへの絶対パス(例:s3n://bucketname/compressed/00001.xml.gz)だけを渡すと正常に動作しますが、1つのファイルしか処理されません。ディレクトリの名前(s3n://bucketname/compressed/)を使用して、そのファイルが処理されることを期待しましたが、そのディレクトリをジョブに渡すだけです。Amazon Elastic MapReduceに複数のファイルが入力されています

同時に、私はより小さなローカルハープインストールを持っています。それで、ワイルドカード(/path/to/dir/on/hdfs/*.xml.gz)で私の仕事に合格すると、正常に動作し、1000個のファイルがすべて正しくリストされます。

すべてのファイルを一覧表示するにはどうすればよいですか?

+0

また、コードからs3のディレクトリ内のファイルをリストする方法はありますか?私はそれらのファイルからパスを生成することができます。 –

+1

それは今作動する!同じバケツに 'compressed'という空のファイルがありました。空のファイルを削除するとすぐに、プログラムが動作し始めました。 –

答えて

2

私はEMRは、すべてのファイルを一覧表示方法を知りませんが、ここでは私のために動作するコードの一部です:

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

これは、入力ディレクトリ内にあるすべてのファイルの一覧が表示されます、とのことができます。あなたがすることにそれらを行う

+1

あなたの返事をありがとう。この問題は後で修正されました。同じバケットに圧縮された空のファイルがありました。空のファイルを削除するとすぐに、プログラムが動作し始めました。 –

+0

+1:これは私を助けます。ありがとう! – jldupont

関連する問題