6

カスタムjarを使用してElasticMapReduce(EMR)でジョブを実行しようとしています。1つのディレクトリで約1000個のファイルを処理しようとしています。パラメータを指定してジョブを送信するとs3n://bucketname/compressed/*.xml.gz、「matched0files」エラーが発生します。ファイルへの絶対パス(例s3n://bucketname/compressed/00001.xml.gz)だけを渡すと、正常に実行されますが、処理されるファイルは1つだけです。ディレクトリの名前(s3n://bucketname/compressed/)を使用して、内部のファイルが処理されることを期待しましたが、それはディレクトリをジョブに渡すだけです。

同時に、小規模なローカルHadoopインストールがあります。その中で、ワイルドカード()を使用してジョブを渡すと、/path/to/dir/on/hdfs/*.xml.gz正常に機能し、1000個のファイルすべてが正しくリストされます。

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

4

1 に答える 1

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

それは入力ディレクトリにあるすべてのファイルをリストします、そしてあなたはあなたがするであろうそれらに何でもすることができます

于 2011-09-28T21:42:10.773 に答える