Hier können Sie die Hilfe des unten angegebenen Reduziercodes verwenden, um die Sortierung in absteigender Reihenfolge zu erreichen.
Angenommen, Sie Mapper und Treiber-Code geschrieben haben, in der Mapper Ausgabe als (Banane, 1) produzieren usw.
In Minderer werden fassen wir alle Werte für einen bestimmten Schlüssel und setzen Endergebnis in einer Karte dann die Karte sortieren auf der Grundlage der Werte und schreibe das Endergebnis in die Aufräumfunktion Reduzieren.
finden Sie unter Code für die weitere understadnind:
public class Word_Reducer extends Reducer<Text,IntWritable, Text ,
IntWritable> {
// Change access modifier as per your need
public Map<String , Integer > map = new LinkedHashMap<String , Integer>();
public void reduce(Text key , Iterable<IntWritable> values ,Context context
)
{
// write logic for your reducer
// Enter reduced values in map for each key
for (IntWritable value : values){
// calculate "count" associated with each word
}
map.put(key.toString() , count);
}
public void cleanup(Context context){
//Cleanup is called once at the end to finish off anything for reducer
//Here we will write our final output
Map<String , Integer> sortedMap = new HashMap<String , Integer>();
/
sortedMap = sortMap(map);
for (Map.Entry<String,Integer> entry = sortedMap.entrySet()){
context.write(new Text(entry.getKey()),new
IntWritable(entry.getValue()));
}
}
public Map<String , Integer > sortMap (Map<String,Integer> unsortMap){
Map<String ,Integer> hashmap = new LinkedHashMap<String,Integer>();
int count=0;
List<Map.Entry<String,Integer>> list = new
LinkedList<Map.Entry<String,Integer>>(unsortMap.entrySet());
//Sorting the list we created from unsorted Map
Collections.sort(list , new Comparator<Map.Entry<String,Integer>>(){
public int compare (Map.Entry<String , Integer> o1 , Map.Entry<String ,
Integer> o2){
//sorting in descending order
return o2.getValue().compareTo(o1.getValue());
}
});
for(Map.Entry<String, Integer> entry : list){
// only writing top 3 in the sorted map
if(count>2)
break;
hashmap.put(entry.getKey(),entry.getValue());
}
return hashmap ;
}
}
„sekundäre Sortier mapreduce“ für Suchen Sie einfach und Sie werden viele Beispiele finden. –
@BinaryNerd Dies ist keine sekundäre Sortierung, wenn ich mich nicht irre. Dies ist nur eine Art nach Wert, die einfacher ist als die sekundäre Sortierung. – philantrovert
Sortieren nach Wert ist eine sekundäre Sortierung in hadoop mapreduce, die primäre Sortierung ist auf dem Schlüssel. –