Wie können wir kontrollieren, bestimmte Schlüssel sollten in einem bestimmten Reducer gehen? Kann mir jemand bei dieser Frage helfen?Wie können wir kontrollieren, bestimmte Schlüssel sollten in einem bestimmten Reduzierer gehen?
Antwort
Die partitioner ist der wichtigste Mechanismus, um zu steuern, welche Schlüssel an einen bestimmten Reduzierer gesendet werden.
Partitionierung steuert die Partitionierung der Schlüssel der Zwischen- Kartenausgänge. Der Schlüssel (oder eine Teilmenge des Schlüssels) wird verwendet, um die Partition typischerweise durch eine Hash-Funktion abzuleiten. Die Gesamtanzahl der Partitionen ist identisch mit der Anzahl der Reduzierungsaufgaben für den Job. Damit wird gesteuert, welche der m Tasks den Zwischenschlüssel (und damit den Datensatz) zur Reduktion gesendet werden.
Der Standard ist die Partitionierer HashPartitoner, die die hashCode()
des Schlüsselobjekts verwendet, um zu bestimmen, welche zu reduzieren wird eine bestimmte Taste gesendet.
In Ihrem Treiber können Sie eine andere Partitionierungs eingestellt werden:
job.setPartitionerClass(Class<? extends Partitioner> cls)
Benutzerdefinierte Partitionierer die Partitioner<K2, V2>
-Schnittstelle implementieren, die eine einzige Methode hat getPartition(KEY key, VALUE value, int numPartitions)
die Umsetzung benötigt.
Zum Beispiel die HashPartitioner
Implementierung von getPartition
wie folgt aussieht:
public int getPartition(K2 key, V2 value,int numReduceTasks) {
return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks;
}
Ok ... vielen Dank –
- 1. Sollten wir Open-Source gehen?
- 2. Azure Logic App - Wie können wir Updates kontrollieren oder verwalten?
- 3. können wir doppelten Schlüssel in hashmap einfügen?
- 4. Wie können Sie dynamische Schlüssel in einem Array nur in einem bestimmten Format hinzufügen?
- 5. Wie aktualisiere ich bestimmte Ini-Schlüssel in bestimmten Abschnitten?
- 6. Sollten wir Karte überqueren? Warum?
- 7. Wie viele Daten können/sollten Sie in einem Benutzersitzungsobjekt speichern?
- 8. Wohin sollten CreateMap-Anweisungen gehen?
- 9. NodaTime, sollten wir LocalDateTime für Buchungszeiten verwenden?
- 10. Sollten wir verschachtelte Göroutinen machen?
- 11. sollten wir Path.DirectorySeperatorChar verwenden C#
- 12. Können wir assoziatives Array für bestimmte Werte in PHP iterieren?
- 13. Warum sollten wir veröffentlichen?
- 14. Welche Quellensteuerung sollten wir verwenden?
- 15. können wir einen Container in einem bestimmten Knoten in einem Docker-Schwarm bereitstellen
- 16. Können wir & in URL verwenden?
- 17. Sollten wir BizTalk/ESB einführen?
- 18. Warum sollten wir Sitzung in PHP zerstören?
- 19. In CAKEPPP können wir die Tabelle, die mit einem bestimmten Modell verknüpft ist, dynamisch ändern?
- 20. Drupal: Wie man bestimmte Ansicht in einem bestimmten Block zeigt
- 21. Was wir in einem Business-Logik-Layer (BLL) haben sollten
- 22. Warum sollten wir Verhalten in FRP
- 23. GnuPG: Wie verschlüsseln/entschlüsseln Dateien mit einem bestimmten Schlüssel?
- 24. Wie bestimmte Schlüssel aus Hive-Kartentyp entfernen?
- 25. Warum sollten wir lua_pushinteger() verwenden?
- 26. Sollten wir ausführlich Kommentare schreiben?
- 27. Sollten wir zu WPF oder Winforms migrieren?
- 28. Wann sollten wir multiprocessing.Pool.join aufrufen?
- 29. Sollten wir die Testprotokollierung zusammenführen?
- 30. Warum sollten wir Literale in C# verwenden?
Ich glaube, Sie können dies tun, indem Sie benutzerdefinierte Partitionierungs –
ok mit ... danke. –