Il partizionamento è il processo per determinare quale istanza del riduttore riceverà quali chiavi e valori intermedi. Ogni mappatore deve determinare per tutte le sue coppie di output (chiave, valore) che il riduttore le riceverà. È necessario che per ogni chiave, indipendentemente da quale istanza del programma di mapping sia stata generata, la partizione di destinazione sia la stessa. Problema: come ha fatto lo hadoop? Usa una funzione hash? qual è la funzione predefinita?Partizionamento! come fa hadoop farlo? Usa una funzione hash? qual è la funzione predefinita?
6
A
risposta
16
Il partizionatore predefinito in Hadoop è il HashPartitioner
che ha un metodo chiamato getPartition
. Prende key.hashCode() & Integer.MAX_VALUE
e trova il modulo utilizzando il numero di operazioni di riduzione.
Ad esempio, se ci sono 10 operazioni di riduzione, getPartition
restituirà i valori da 0 a 9 per tutte le chiavi.
Ecco il codice:
public class HashPartitioner<K, V> extends Partitioner<K, V> {
public int getPartition(K key, V value, int numReduceTasks) {
return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks;
}
}
Per creare un partizionamento personalizzato, è necessario estendere Partitioner
, creare un metodo getPartition
, quindi impostare il vostro programma di partizionamento nel codice del driver (job.setPartitionerClass(CustomPartitioner.class);
). Ciò è particolarmente utile se si eseguono operazioni di ordinamento secondario, ad esempio.
Problemi correlati
- 1. Perché Git usa una funzione hash crittografica?
- 2. Qual è la funzione di hash predefinita utilizzata in C++ std :: unordered_map?
- 3. Funzione hash per una stringa
- 4. Creazione di una tabella hash/funzione hash
- 5. Cosa fa la funzione invisibile()?
- 6. Ignora la funzione php predefinita
- 7. Funzione hash di unordered_set
- 8. Posso forzare una funzione membro predefinita predefinita come non valida?
- 9. djb2 funzione hash
- 10. Che cos'è NSObject isEqual: e funzione di hash predefinita?
- 11. Usa la stringa JavaScript come nome funzione?
- 12. Qual è la convenzione di chiamata predefinita di una funzione lambda C++?
- 13. Una funzione hash minima per C?
- 14. Come testare una funzione che usa Popen?
- 15. Qual è la causa dell'errore `stringa.split non è una funzione`?
- 16. Qual è la differenza tra una subroutine e una funzione?
- 17. Oracle ha una funzione hash incorporata?
- 18. Questa funzione "hash veloce" è pericolosa?
- 19. usa la funzione personalizzata in assetmanager
- 20. Qual è la differenza tra funzione e funzione
- 21. MD5 Funzione hash in Excel?
- 22. Una funzione di hash veloce per la stringa in C#
- 23. La funzione hash della stringa .NET è portatile?
- 24. funzione hash per carri
- 25. Qual è la differenza tra una funzione membro const e una funzione membro non const?
- 26. Che cos'è una buona funzione hash?
- 27. Qual è la sintassi? ; (funzione ($, indefinito)
- 28. Qual è la funzione di SOCK_STREAM?
- 29. Qual è la funzione di - [NSURL isFileReferenceURL]?
- 30. La variabile di ritorno predefinita della funzione è sempre allocata?
capito! grazie! –
@tommy_o Come viene chiamato il metodo getPartition (..)? Cosa chiama questo metodo? dove chiamare questo metodo? –
@BurakKarasoy quando si crea un oggetto Job per configurare le proprietà del lavoro MR, fornirà un metodo per dichiarare CustomPartitioner se presente come specificato dall'autore sopra. Questo partizionatore personalizzato viene richiamato internamente al framework MR dopo che l'attività Map è stata completata e i dati vengono riversati sul disco –