Как метод mapper run() обрабатывает последнюю запись?

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

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

При использовании приведенного выше фрагмента при вызове метода запуска картографа каждый раз он получает следующий ключ, пару значений с помощью функции nextkeyvalue() из рекордера и обрабатывает текущий ключ, пару значений. Таким образом, в этом случае, если мы обрабатываем последнюю запись определенного входного разделения, функция nextkeyvalue() вернет false, и мы не будем пропускать последнюю запись в каждом входном разделении?

1 ответ

Решение

nextKeyValue() либо переходит к следующему ключу / значению и возвращает значение true, либо достигает конца и возвращает значение false. Поэтому, когда nextKeyValue() возвращает истину в последний раз getCurrentKey() а также getCurrentValue() получит окончательный ключ / значение для разделения.

Другие вопросы по тегам