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中的最后一条记录?
答案 0 :(得分:1)
nextKeyValue()
前进到下一个键/值并返回true,或者已到达结尾并返回false。因此,当nextKeyValue()
在最后时间getCurrentKey()
返回true时,getCurrentValue()
将获得拆分的最终键/值。