Jak mogę wysłać konkretny rekord do wszystkich moich reduktorów?Hadoop wysłać rekord do wszystkich reduktorów
Znam klasę Partitioner i co robi, ale nie widzę łatwego sposobu upewnienia się, że rekord trafia do wszystkich reduktorów.
Zasadniczo partycjonowania ma tę metodę:
int getPartition(K2 key,
V2 value,
int numPartitions)
Moim pierwszym pomysłem było mieć partycjonowania i odwzorowującego współpracować następująco: Mapper utrzymuje wyprowadzania rekord kilkakrotnie równą liczbę zmniejszyć zadania i Partitioner zwraca wszystkie ints (od 0 do numPartitions-1), tym samym upewniając się, że rekord dociera do wszystkich partycji.
Czy istnieją inne, mądrzejsze sposoby rozwiązania tego problemu? Na przykład zwracam -1 dla rekordów, które muszę wysłać do wszystkich partycji, a framework robi to dla mnie, gdy widzi zwrócony -1.
Muszę również zaktualizować tę odpowiedź w odniesieniu do komparatora grupującego, którego będziesz potrzebować. –
Tak też myślałem. Nie opisałem tego bardzo wyraźnie i myślałem także o liczniku w obiekcie Partitioner, aby śledzić, co to jest następna partycja, którą ma zwrócić. Jednak nie jestem pewien, jest to rozwiązanie, ponieważ obiekt Partitioner może być GC-ed i resetowanie licznika. Jeśli chodzi o komparator grupowy, myślę, że to zależy od moich wymagań, których nie opisałem. W razie potrzeby wrócę. Dzięki! – Razvan