¿Cómo puedo enviar un registro específico a todos mis reductores?Hadoop envía el registro a todos los reductores
Conozco la clase de Particionador y lo que hace, pero no veo ninguna manera fácil de asegurar que un registro vaya a todos los reductores.
Básicamente, el particionamiento en cuenta este método:
int getPartition(K2 key,
V2 value,
int numPartitions)
Mi primera idea era tener la herramienta de particionado y el asignador de colaborar de la siguiente manera: el Mapper mantiene la salida del registro de un número de veces igual al número de reducir tareas y Partitioner devuelve todos los enteros (de 0 a numPartitions-1), de esta manera, asegúrese de que el registro llegue a todas las particiones.
¿Hay alguna otra manera más inteligente de resolver esto? Por ejemplo, devuelvo -1 para los registros que necesito enviar a todas las particiones y el marco hace eso para mí cuando ve el -1 devuelto.
También necesito actualizar esta respuesta con respecto al comparador de agrupación que va a necesitar. –
Así es como yo también pensaba. No lo describí muy claramente y también estaba pensando en tener un contador en el objeto Partitioner para hacer un seguimiento de cuál es la próxima partición que tiene que devolver. Sin embargo, no estoy seguro de que esto sea una solución porque el objeto Partitioner podría ser GC-ed y el contador reiniciarse. En cuanto al comparador de agrupación, creo que esto depende de mis requisitos que no describí. Volveré si es necesario. Gracias! – Razvan