1

MapReduceジョブがあり、そのマップタスクはTextInputFormatを使用します。map関数で、分割の終わりに達したとき(つまり、最後のレコードがmap関数に渡されたばかり)を知りたいのですが。

いくつかの組み込みカウンターがあることを知っています(例:すべてのマッパーによってこれまでに消費された入力レコードをカウントするマップ入力レコードカウンターですが、それは私が必要とするものではありません)。

これらの組み込みカウンターの1つを使用できますか?

そうでない場合は、マップタスクでこの情報を取得する方法を知っていますか?

4

2 に答える 2

4

Mapper.cleanup(Context)メソッド (またはMapper.close()古い mapred api の場合) にロジックを配置できます。これは、map メソッドによって最後のレコードが処理された後に呼び出されます。

于 2012-07-10T01:28:46.750 に答える
1

ipnut形式のレコードリーダーを変更することで解決します。このカスタムレコードリーダーは、現在の行と次の行を維持します(小さなプリフェッチなど)。したがって、それ以上の線がないことを認識し、マッパーにそれを示すことができます。

于 2012-07-10T09:10:32.090 に答える