Работа RecordReader в Hadoop

Кто-нибудь может объяснить, как на самом деле работает RecordReader? Как работают методы nextkeyvalue(), getCurrentkey() и getprogress() после запуска программы?


person Amnesiac    schedule 08.06.2012    source источник


Ответы (2)


(новый API): класс Mapper по умолчанию имеет метод запуска, который выглядит следующим образом:

public void run(Context context) throws IOException, InterruptedException {
    setup(context);
    while (context.nextKeyValue()) {
        map(context.getCurrentKey(), context.getCurrentValue(), context);
    }
    cleanup(context);
}

Методы Context.nextKeyValue(), Context.getCurrentKey() и Context.getCurrentValue() являются оболочками для методов RecordReader. См. исходный файл src/mapred/org/apache/hadoop/mapreduce/MapContext.java.

Итак, этот цикл выполняется и вызывает метод map(K, V, Context) вашей реализации Mapper.

Конкретно, что еще вы хотели бы узнать?

person Chris White    schedule 08.06.2012
comment
@Chris .. Это очень полезно ..... и можете ли вы объяснить о разделении и записи, которые появляются в диктофоне? Я сбит с толку... - person Amnesiac; 09.06.2012
comment
Разделения создаются InputFormat и извлекаются из входных файлов, которые вы передаете, независимо от того, являются ли сами входные файлы разделяемыми, и других параметров, через которые вы проходите, таких как максимальный / минимальный размер разделения. - person Chris White; 14.06.2012
comment
Затем каждое разделение обрабатывается для создания записей, которые передаются методу карты. - person Chris White; 14.06.2012
comment
@ Крис .. большое спасибо .. теперь мне все ясно .... эй, мне нужна еще одна помощь .. Не могли бы вы помочь мне в этом вопросе. stackoverflow.com/questions/10984168/ . .thnx.. - person Amnesiac; 14.06.2012
comment
Как насчет getProgress()? - person Ravindranath Akila; 13.06.2014
comment
@ChrisWhite, а как насчет метода getProgress(), как и когда он будет вызываться и каково его значение? - person Bhushan Kawadkar; 27.05.2016

org.apache.hadoop.mapred.MapTask — runNewMapper()

Шаги беса:

  1. создает новый маппер

  2. получить разделение ввода для картографа

  3. получить рекордер для разделения

  4. инициализировать считыватель записей

  5. используя средство чтения записей, выполните итерацию через getNextKeyVal() и передайте ключ, val методу карты картографов

  6. очистить

person Liju John    schedule 15.01.2016