1

レデューサーキーに基づいて、MultipleOutputFormatによって管理されているさまざまなファイルのサブパスを制御する必要があります。

基本的に、レデューサーに与えられたキーに基づいてファイルのサブパスを設定したいと思います。

MultipleOutputFormatのgenerateFileNameForKeyValueメソッドを上書きすることでファイル名を変更できますが、これらのファイルのサブパスも変更するにはどうすればよいですか?

つまり、generateFileNameForKeyValueをオーバーライドするだけで、次のようになります。

mySetJobConfigOutputPath/fileNameBasedKey1.dat
                        /fileNameBasedKey2.dat
                        /fileNameBasedKey3.dat
                        ...

でも、以下のようなファイルを整理したいです

 mySetJobConfigOutputPath/path0ConfiguredInsideReducerBasedOnKey/fileNameBasedKey1.dat

                         /path1ConfiguredInsideReducerBasedOnKey/fileNameBasedKey2.dat
                                                                /fileNameBasedKey3.dat

                         /path2ConfiguredInsideReducerBasedOnKey/fileNameBasedKey8.dat

ご覧のとおり、サブパスとファイル名は両方とも、レデューサー内のキーによって計算されます。

ファイル名を構成する方法を知っていますが、mySetJobConfigOutputPathフォルダーの下にある各ファイルのサブパスを構成できるかどうか疑問に思っていましたか?

4

1 に答える 1

0

getInputFileBasedOutputFileNameメソッドもオーバーライドして、そこにサブパスを指定できることがわかりました。

@Override
protected String getInputFileBasedOutputFileName(JobConf conf, String Name)
{
     //your logic goes here. Simply addd the sub path to the name and return    
}

リード ファイル名をキーに変換するには、引き続きgenerateFileNameForKeyValueを実装する必要があります。

更新: 基本的に、これですべてが説明されますhttp://www.infoq.com/articles/HadoopOutputFormat

于 2012-06-29T03:04:21.593 に答える