Ich bin neu bei hadoop mapreduce Programmierparadigma, kann mir jemand sagen, wie kann ich basierend auf Werten leicht sortieren? Ich habe versucht, eine andere Vergleichsklasse zu implementieren, aber gibt es einen einfacheren Weg wie durch Job-Konfiguration, um basierend auf Werten des Reduzierers zu sortieren. Im Grunde lese ich Log-Dateien und ich möchte URL in aufsteigender Reihenfolge zu hitcount bestellen.aufsteigende Sortierung basierend auf den Werten des Reduzierers
0
A
Antwort
0
Deklarieren Sie eine Karte in Ihrer Reducer-Klasse und fügen Sie den Schlüssel und die Werte in die Karte ein. Jetzt in der cleanup() - Methode Ihrer Reducer-Klasse versuchen, die Karte nach Werten zu sortieren und schließlich die Werte in context.write (Schlüssel, Wert);
public static class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable();
TreeMap<Text,IntWritable>result=new TreeMap<Text, IntWritable>();
public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.put(new Text(key),new IntWritable(sum));
}
}
@Override
protected void cleanup(Context context)
throws IOException, InterruptedException {
Set<Entry<Text, IntWritable>> set = result.entrySet();
List<Entry<Text, IntWritable>> list = new ArrayList<Entry<Text,IntWritable>>(set);
Collections.sort(list, new Comparator<Map.Entry<Text, IntWritable>>()
{
public int compare(Map.Entry<Text, IntWritable> o1, Map.Entry<Text,IntWritable> o2)
{
return (o2.getValue()).compareTo(o1.getValue());
}
});
for(Map.Entry<Text,IntWritable> entry:list){
context.write(entry.getKey(),entry.getValue());
}
}
}
0
In diesem Fall müssen Sie zwei Map-Reduce-Jobs schreiben. Erster Job, zählen Sie die Anzahl der URLs. wie Ausgabe von fisrt Aufgabe wird es sein -
yahoo.com,100
google.com,200
msn.com,50
Pass dieses zweite Karte Job reduzieren und es auf Zählung basierte sortieren.
Verwandte Themen
- 1. SAPUI5 - Gruppenlistenelemente ohne aufsteigende oder absteigende Sortierung
- 2. Sortierung aufsteigende und absteigende in einer Liste
- 3. Aufsteigende Sortierreihenfolge in der Liste des Diktats
- 4. String mit Auswahlwerten basierend auf den Werten
- 5. Gruppierung Array basierend auf den Werten
- 6. basierend auf den Werten in einem anderen
- 7. Sortierung der ersten Elemente eines 2D-Arrays basierend auf den Werten in dem zu sortierenden Array
- 8. Wie wird der Zustand des Reduzierers aktualisiert?
- 9. Farbfüllung basierend auf Werten?
- 10. Ruby Sortierung basierend auf vordefinierten Liste
- 11. Sortierung String basierend auf Ähnlichkeiten
- 12. Sortierung Array basierend auf Spielerposition
- 13. Elasticsearch: Sortierung basierend auf Bewertung
- 14. Benutzerdefinierte Sortierung basierend auf Stringlänge
- 15. Sortierung basierend auf zwei Feldern
- 16. Sortierung ArrayList basierend auf String
- 17. ein Wörterbuch Sortierung basierend auf mehrer params
- 18. Sortierung nach 3 Werten
- 19. Verschachtelte Sortierung nach mehreren Werten auf Elasticsearch
- 20. Farbe auf Z-Werte basierend auf den Z-Werten setzen
- 21. ausschließen Zeilen basierend auf den Werten auf anderen Zeilen
- 22. Postgres Sortierung basierend auf mehreren Datumswert
- 23. Voreingestellte Dropdown-Liste basierend auf Werten des eckigen Objekts
- 24. Python - Überprüfen des Ereignisses basierend auf Werten im Datenrahmen
- 25. Zugriff auf den Status des Reduzierers in anderen Reducer in Reat Redux
- 26. Sortierung und Sortierung von ArrayList-Daten basierend auf Bedingung
- 27. Kotlin - Sortierung MutableList basierend auf Objekteigenschaft
- 28. MySQL Aktualisierungsabfrage basierend auf Werten
- 29. Sortierung eines Boxplots basierend auf Medianwert
- 30. Pandas verschmelzen Datenrahmen basierend auf den meisten ähnlichen Werten
Sortieren leicht? Schreibe MapReduce nicht. Verwenden Sie Pig/Hive/Spark –
Ich muss map reduzieren, das ist eine Einschränkung, leider. – cowgirl