Кто-нибудь может объяснить, как на самом деле работает RecordReader? Как работают методы nextkeyvalue()
, getCurrentkey()
и getprogress()
после запуска программы?
Работа RecordReader в Hadoop
Ответы (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
@Chris .. Это очень полезно ..... и можете ли вы объяснить о разделении и записи, которые появляются в диктофоне? Я сбит с толку...
- person Amnesiac; 09.06.2012
Разделения создаются InputFormat и извлекаются из входных файлов, которые вы передаете, независимо от того, являются ли сами входные файлы разделяемыми, и других параметров, через которые вы проходите, таких как максимальный / минимальный размер разделения.
- person Chris White; 14.06.2012
Затем каждое разделение обрабатывается для создания записей, которые передаются методу карты.
- person Chris White; 14.06.2012
@ Крис .. большое спасибо .. теперь мне все ясно .... эй, мне нужна еще одна помощь .. Не могли бы вы помочь мне в этом вопросе. stackoverflow.com/questions/10984168/ . .thnx..
- person Amnesiac; 14.06.2012
Как насчет getProgress()?
- person Ravindranath Akila; 13.06.2014
@ChrisWhite, а как насчет метода getProgress(), как и когда он будет вызываться и каково его значение?
- person Bhushan Kawadkar; 27.05.2016
org.apache.hadoop.mapred.MapTask — runNewMapper()
Шаги беса:
создает новый маппер
получить разделение ввода для картографа
получить рекордер для разделения
инициализировать считыватель записей
используя средство чтения записей, выполните итерацию через getNextKeyVal() и передайте ключ, val методу карты картографов
очистить
person
Liju John
schedule
15.01.2016