Come posso inviare un record specifico a tutti i miei riduttori?Hadoop invia record a tutti i riduttori
Conosco la classe Partitioner e cosa fa, ma non vedo alcun modo semplice per assicurarsi che un record vada a tutti i riduttori.
In sostanza, il partizionamento ha questo metodo:
int getPartition(K2 key,
V2 value,
int numPartitions)
La mia prima idea era di avere il partizionamento e la Mapper collaborare come segue: il Mapper mantiene emettere il record di un numero di volte pari al numero di ridurre task e il Partitioner restituisce tutti gli interi (da 0 a numPartitions-1), in questo modo assicurandosi che il record raggiunga tutte le partizioni.
Esistono altri modi più intelligenti per risolvere questo problema? Ad esempio, restituisco -1 per i record che ho bisogno di inviare a tutte le partizioni e il framework lo fa per me quando vede restituito -1.
Ho anche bisogno di aggiornare questa risposta per quanto riguarda il comparatore di raggruppamento di cui avrete bisogno. –
Ecco come stavo pensando anche io. Non l'ho descritto molto chiaramente e stavo anche pensando di avere un contatore nell'oggetto Partitioner per tenere traccia di qual è la prossima partizione che deve restituire. Tuttavia, non sono sicuro che questa sia una soluzione perché l'oggetto Partitioner potrebbe essere GC-ed e il contatore resettato. Per quanto riguarda il comparatore di raggruppamento, penso che ciò dipenda dalle mie esigenze che non ho descritto. Tornerò se necessario. Grazie! – Razvan