Czy ktoś może wyjaśnić, jak działa RecordReader? Jak działają metody po uruchomieniu programu?Praca RecordReadera w Hadoop
9
A
Odpowiedz
13
(nowe API): Domyślna klasa Mapper ma metodę run, który wygląda tak:
public void run(Context context) throws IOException, InterruptedException {
setup(context);
while (context.nextKeyValue()) {
map(context.getCurrentKey(), context.getCurrentValue(), context);
}
cleanup(context);
}
W Context.nextKeyValue()
, Context.getCurrentKey()
i Context.getCurrentValue()
metody są owijarki do metod RecordReader
. Zobacz plik źródłowy src/mapred/org/apache/hadoop/mapreduce/MapContext.java
.
Ta pętla wykonuje i wywołuje metodę wdrożenia Mappera pod nazwą map(K, V, Context)
.
Co jeszcze chciałbyś wiedzieć?
0
org.apache.hadoop.mapred.MapTask - runNewMapper()
Imp kroki:
tworzy nowe Mapper
dostać wejściowe podzielone na odwzorowującego
pobierz rejestrator dla podziału
zainicjować czytnika rekord
użyciu czytnika rekord iterację getNextKeyVal() i przekazać klucz, val do metody mappers mapy
oczyścić
@ Chris..Thts bardzo pomocny .. ... i czy możesz wyjaśnić, że podziały i zapisy pojawiają się w rejestratorze? Jestem zdezorientowany ... – Amnesiac
Podziały są tworzone przez InputFormat i pochodzą z plików wejściowych, które przekazujesz, niezależnie od tego, czy same pliki wejściowe są dzielalne, oraz z innych opcji, które możesz ominąć, np. Podział maksymalny/min. –
Każdy podział jest wtedy przetwarzane w celu wytworzenia zapisów, które są przekazywane do metody mapowej –