Hej,
Chciałem napisać sobie "Hello World" w świecie Map Reduce czyli wyliczyć ilość wystąpień danego słowa w tekście. Generalnie algorytm wydaje się być trywialny. Nie mniej jednak nie wiem jakich klas Javy moge użyć aby wykonać mapowanie, które daje rezultat:
Input:
one fish two fish
red fish blue fish
Output:
<one, 1>
<fish, 1>
<two, 1>
<fish, 1>
Zwykła mapa odpada z powodu konfliktu kluczy. Dwa razy występuje "fish".
Przykład i wyjaśnienie Map Reduce wziąłem o stąd -> http://webmapreduce.sourceforge.net/docs/User_Guide/sect-User_Guide-What_is_Map_Reduce-Example_WordCount.html
Aktualizacja.
Troszkę liznąłem temat.
Pierwszy wniosek.
Funkcja map() produkuje zestawy <String, "1"> które to są obsługiwane przez funkcję reduce().
Wydaje mi się, że bezsensownym jest zapisywanie i przechowywanie gdziekolwiek wszystkiego co wypluje map().
Dobrze by było aby to co produkuje map jako sys.out, było przekazywane do reduce jako sys.in.
Drugi wniosek
Są o wiele lepsze języki do takich zadań. Widziałem fajne rozwiązania z użyciem pythona. Lekko, szybko i przyjemnie. Chyba się przeniosę z tym tematem na pythona, dopóki nie zaprzęgnę do roboty hadoop.