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

How does mapper run() method process the last record?

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

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

使用上面的代码片段,当映射器的运行方法被调用时,每次它通过nextkeyvalue()函数从recordreader获取下一个键值对并处理当前键值对。因此,在那种情况下,如果我们正在处理特定输入拆分的最后一条记录,则 nextkeyvalue() 函数将 return false 并且我们不会丢失每个输入拆分中的最后一条记录?

nextKeyValue() 要么前进到下一个 key/value 且 returns 为真,要么已到达终点且 returns 为假。因此,当 nextKeyValue() returns 最后一次为真时 getCurrentKey()getCurrentValue() 将获得最终的 key/value 拆分。