Mapper/Reducer 1 --> (key,value)
/ | \
/ | \
Mapper/Reducer 2 | Mapper/Reducer 4
-> (oKey,oValue) | -> (xKey, xValue)
|
|
Mapper/Reducer 3
-> (aKey, aValue)
Mam plik dziennika, który agreguję z MR1. Mapper2, Mapper3, Mapper4 pobiera dane wyjściowe MR1 jako dane wejściowe. Zadania są powiązane.Hadoop - jak używać i zmniejszać wiele wejść?
MR1 wyjściowa:
User {infos of user:[{data here},{more data},{etc}]}
..
MR2 wyjściowa:
timestamp idCount
..
MR3 wyjściowa:
timestamp loginCount
..
MR4 wyjściowa:
timestamp someCount
..
chcę połączyć wyjścia z MR2-4: Final output->
timestamp idCount loginCount someCount
..
..
..
Czy istnieje sposób, w/o świni lub ula? Używam Java.
+1 dla samej sztuki ASCII .. –
Czy w drugim kroku nie można wykonać wielofunkcyjnego zadania MR, ponieważ wszystkie klucze są sygnaturami czasowymi? To znaczy. interpretować wartość, która została przekazana i odpowiednio ją obsłużyć? Widząc, że reduktory mają zagwarantowane otrzymywanie wszystkich wartości dla danego klucza, możesz zebrać wszystkie informacje związane ze znacznikiem czasu i zapisać je tylko wtedy, gdy masz wszystkie potrzebne komponenty. – Quetzalcoatl
Właściwie to zrobiłem i zadziałało. Pojawiło się jedno pytanie: Aby osiągnąć to, co chciałem, napisałem 3 razy w funkcji mapy do kontekstu (context.write (key1, value1) - głębiej w code context.write (key2, value2) oraz w kontekście końcowym. write (key3, value3) Czy to możliwe? – JustTheAverageGirl