mapper run()方法如何处理最后一条记录?

时间:2015-03-17 17:14:01

标签: hadoop mapreduce recordreader

public void run(Context context) throws IOException, InterruptedException 
{
setup(context);

while (context.nextKeyValue()) {
map(context.getCurrentKey(), context.getCurrentValue(), context);
 }
cleanup(context);
}

使用上面的片段,当调用mapper的run方法时,每次它从recordreader获取nextkeyvalue()函数的下一个键,值对并处理当前键,值对。那么在这种情况下,如果我们正在处理特定inputsplit的最后一条记录,那么nextkeyvalue()函数将返回false并且我们不会错过每个inputsplit中的最后一条记录?

1 个答案:

答案 0 :(得分:1)

nextKeyValue()前进到下一个键/值并返回true,或者已到达结尾并返回false。因此,当nextKeyValue()在最后时间getCurrentKey()返回true时,getCurrentValue()将获得拆分的最终键/值。