Oto przykład grupowania. Zastanów się klucz złożony (a, b)
i jego wartość v
. I załóżmy, że po sortowaniu skończyć się, między innymi, z następującej grupy (klucz, wartość) pary:
(a1, b11) -> v1
(a1, b12) -> v2
(a1, b13) -> v3
Z komparatora domyślne grupy ramy będzie wywołać funkcję reduce
3 razy dany (klucz , value), ponieważ wszystkie klucze są różne.Jeśli jednak udostępnisz własny niestandardowy komparator grupowy i zdefiniujesz go tak, aby zależał tylko od a
, ignorując b
, wówczas framework stwierdza, że wszystkie klucze w tej grupie są równe i wywołuje funkcję zmniejszania tylko raz, używając następującego klucza i lista wartości:
(a1, b11) -> <v1, v2, v3>
Należy pamiętać, że tylko pierwszy klucz kompozyt jest używany, i że B12 i B13 są „przegrane”, czyli nie przeszły do reduktora.
w znanym przykład z książki „Hadoop” Computing max temperaturę na rok a
jest rok, a b
„s Temperatury są sortowane w kolejności malejącej, a tym samym b11 jest pożądana maksymalna temperatura, a ty nie dbaj o inne numery b
. Funkcja redukcji po prostu zapisuje odebrane (a1, b11) jako rozwiązanie dla tego roku.
W twoim przykładzie z "bigdataspeak.com" wszystkie b
są wymagane w reduktorze, ale są dostępne jako części odpowiednich wartości (obiektów) v
.
W ten sposób, dodając swoją wartość lub jej część do klucza, można użyć Hadoop do sortowania nie tylko kluczy, ale także wartości.
Mam nadzieję, że to pomoże.
Aby uzyskać dodatkowe informacje .. http://codingjunkie.net/secondary-sort/ –
jak działa sortowanie wtórne, jaki jest rzeczywisty przepływ z programu odwzorowującego do reduktora? – user1585111
Dla zrozumienia ... odsyłam do tego linku http://answers.oreilly.com/topic/457-introduction-to-mapreduce-workflows/ –