0

出力ファイルを作成する MapReduce ジョブがありpart-00000、このジョブの完了後にもう 1 つのジョブが実行されているとします。

2 番目のジョブの分散キャッシュにある最初のジョブの出力ファイルを使用するにはどうすればよいですか。

4

1 に答える 1

3

以下の手順が役立つ場合があります。

  • 最初のジョブの出力ディレクトリ パスを 2 番目のジョブの Driver クラスに渡します。

  • パス フィルターを使用して、 で始まるファイルを一覧表示しますpart-*。2 番目のジョブ ドライバー クラスについては、以下のコード スニペットを参照してください。

        FileSystem fs = FileSystem.get(conf);
        FileStatus[] fileList = fs.listStatus(new Path("1st job o/p path") , 
                                   new PathFilter(){
                                         @Override public boolean accept(Path path){
                                                return path.getName().startsWith("part-");
                                         } 
                                    } );
    
  • すべてのファイルを反復処理しpart-*、それを追加してキャッシュを分散します。

        for(int i=0; i < fileList.length;i++){ 
                 DistributedCache.addCacheFile(new URI(fileList[i].getPath().toUri()));
        }
    
于 2015-05-14T05:56:37.067 に答える