На това упражнение отново се върнахме на Apache Hadoop и MapReduce имплементацията му. Поставихме си за задача да реализираме inverted index задачата като MapReduce job. Отново се сблъскахме с проблеми в Java API-то, които не ни позволиха съвсем директно да пренесем код от предния ни word count пример, и да го преизползваме. В нашия job driver вместо Job трябваше да използваме JobConf типа.

Типизацията на нашия MapReduce job беше следната: map процесът приема <LongWritable, Text> двойка (получавате във втория аргумент даден ред от даден входен файл, а в първия - двоичният му offset спрямо началото на файла) и emit-ва <Text, Text> двойка - тя е <дума, "име на файл@двоично отместване">. Reduce процесът приема <Text, списък(Text)> на входа си, и emit-ва отново <Text, Text> - тук просто конкатенирате излъчените стойности за дадена дума.


Накрая, около 21 ч, странен чичко ни напомни да си тръгваме (по доста груб начин) и не успяхме да завършим напълно задачата.


Забележка: Пълното решение може да видите тук. Този Yahoo! tutorial за Hadoop се смята за един от най-добрите по тази тема. Няма да загубите, ако го прегледате!


Поздрави,
Крум, Лазар.
Last modified: Saturday, 12 November 2011, 5:38 PM