これは非常に簡単に行うことができます。それが最新の mapreduce API の利点です。
マッパーの実行は、Mapper クラスの run メソッドをオーバーライドすることで制御できます。リデューサーも同様です。あなたが期待している最終的な結果はわかりません。しかし、私はあなたのために小さな例を用意しました。私は持っている
私のマッパークラスでは、run メソッドをオーバーライドしてサンプルを提供しています。コードでキー値が 200 を超えると、実行が中断されます。
public class ReversingMapper extends Mapper<LongWritable, Text, ReverseIntWritable, Text>
{
public final LongWritable border = new LongWritable(100);
@Override
public void run(Context context) throws IOException, InterruptedException {
setup(context);
while (context.nextKeyValue()) {
/* extra code to standard run method started here */
//if(context.getCounter(<ENUM>) > 200 ){} -- you can place your counter check here.
if(context.getCurrentKey().get() > 200 )
{
throw new InterruptedException();
}else
{
/* extra code to standard run method ended here */
map(context.getCurrentKey(), context.getCurrentValue(), context);
}
}
}
また、ドライバーでも適切に処理する必要があります。
} catch (InterruptedException e) {
e.printStackTrace();
System.exit(0);
}
ロガーを使用して、ここで必要な適切なメッセージをログに記録することもできます..
これで問題が解決することを願っています。さらにサポートが必要な場合はお知らせください。