1

Hadoop API と完全に混同しています。(常に変化していると思います)

私が間違っていなければJobConf、 java から map reduce ジョブを実行する代わりにandクラスdeprecatedを使用することになっていました。最近リリースされたのはもはや非推奨ではないようです!JobConfigurationhadoop 1.0.0 JobConf

だから私はマップ削減ジョブを実行するためにジョブと構成クラスを使用しています。ここで、マップ出力の一部である特定の値に基づいて、レデューサー出力ファイルをフォルダー構造に配置する必要があります。私はいくつかの記事を読み、OutputFormatクラスでそれを達成できることを発見しましたが、このクラスは 2 つのパッケージに含まれています。

org.apache.hadoop.mapred and 
org.apache.hadoop.mapreduce 

このjobオブジェクトでは、出力フォーマット クラスを次のように設定できます。

job.setOutputFormatClass(SomeOutputFormat.class);

SomeOutputFormat extendsと言うとorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat、これという名前のメソッドが 1 つ得られますgetRecordWriter();が、これは出力パスをオーバーライドするのにまったく役立ちません。

を使用する別の方法がありますが、それもクラスjobConfの設定に関してはうまくいかないようです。mappers, reducers, partitions, sorting and grouping

私が見逃していることは非常に明白ですか?値に基づくフォルダー内に削減出力ファイルを書き込みたい。たとえば、SomeOutputPrefix/Value1/Value2/realReduceFileName

ありがとう!

4

1 に答える 1

0

実装する必要があると思います

  1. 独自の出力形式クラスと
  2. さまざまな場所にさまざまな値を書き込む独自の RecordWriter

したがって、 SomeOutputWriter はnew SomeRecordWriter("SomeOutputPrefix")そのgetRecordWriter()メソッドで戻り、SomeRecordWriter異なる値を異なるフォルダーに書き込みます。

于 2012-02-11T15:14:02.343 に答える