Implementacja Map Reduce pattern.

0

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.

0

Przy każdym dodaniu klucza i wartości sprawdzasz czy klucz istnienie i jeśli tak to po prostu zwiększasz wartość o 1.

0

Potrzebuję mieć jednak taką formę o jakiej pisałem. Żadnych zwiększań i zmniejszań. Inaczej nie trzymałbym się tutoriala.

0

W tym przypadku może po prostu stworz klase o dwóch polach: klucz i wartość? I zamiast mapy użyj listy elementów tego stworzonego typu.

0

No w ostateczności tak zrobię.

0

Daj znać jak to rozwiązales : )

1 użytkowników online, w tym zalogowanych: 0, gości: 1