Jestem nowy w Hadoop i obecnie uczę się wzorca projektowego mapreduce z książki Donald Miner & Adam Shook MapReduce Design Pattern. Tak więc w tej książce znajduje się Wzorzec Produktu Kartezjańskiego. Moje pytanie brzmi:
- Kiedy czytnik rekordów wysyła dane do mapera?
- Gdzie jest kod wysyłający dane do mappera?
To co widzę to kolejna funkcja w klasie CartesianRecordReader odczytująca oba splity bez wysyłania danych.
Oto kod źródłowy https ://github.com/adamjshook/mapreducepatterns/blob/master/MRDP/src/main/java/mrdp/ch5/CartesianProduct.java
To wszystko, z góry dzięki :)
1 odpowiedź
Kiedy czytnik rekordów wysyła dane do mapera?
Pozwól, że odpowiem, dając ci wyobrażenie o tym, jak powiązane są mapper i RecordReader. To jest kod Hadoop, który wysyła dane do mapera. 1
RecordReader<K1, V1> input;
K1 key = input.createKey();
V1 value = input.createValue();
while (input.next(key, value)) {
// map pair to output
mapper.map(key, value, output, reporter);
if(incrProcCount) {
reporter.incrCounter(SkipBadRecords.COUNTER_GROUP,
SkipBadRecords.COUNTER_MAP_PROCESSED_RECORDS, 1);
}
}
Zasadniczo Hadoop będzie wywoływał next
, dopóki nie zwróci false
, a przy każdym wywołaniu key
i value
uzyskają nowe wartości. Key
to normalnie odczytane do tej pory bajty i value
następny wiersz w pliku.
Gdzie jest kod wysyłający dane do mappera?
Ten kod znajduje się w kodzie źródłowym hadoop (prawdopodobnie w klasie MapContextImpl), ale przypomina to, co napisałem we fragmencie kodu.
EDYTUJ : kod źródłowy znajduje się pod adresem MapRunner.
Podobne pytania
Nowe pytania
hadoop
Hadoop to projekt open source Apache, który zapewnia oprogramowanie do niezawodnego i skalowalnego przetwarzania rozproszonego. Rdzeń składa się z rozproszonego systemu plików (HDFS) i menedżera zasobów (YARN). Różne inne projekty open source, takie jak Apache Hive, używają Apache Hadoop jako warstwy trwałości.