Ich arbeite an einem Hadoop-Projekt und nach vielen Besuchen in verschiedenen Blogs und Lesen der Dokumentation, erkannte ich, dass ich Secondry-Sortierfunktion von Hadoop-Framework zur Verfügung gestellt werden muss.Sekundäre Sortierung in Hadoop
Mein Eingabeformat ist von der Form:
DESC(String) Price(Integer) and some other Text
ich die Werte in den Minderer will Reihenfolge des Preises sein absteigend. Auch beim Vergleichen von DESC habe ich eine Methode, die zwei Strings und einen Prozentsatz akzeptiert und wenn die Ähnlichkeit zwischen den beiden Strings gleich oder größer als der Prozentsatz ist, dann sollte ich sie als gleich betrachten.
Das Problem ist, nachdem der Reduce Job abgeschlossen ist, kann ich einige DESC sehen, die der anderen Zeichenfolge ähnlich ist, und doch sind sie in anderer Gruppe.
Hier ist meine Methode compareTo von Composite-Schlüssel
public int compareTo(VendorKey o) {
int result =-
result = compare(token, o.token, ":") >= percentage ? 0:1;
if (result == 0) {
return pid> o.pid ?-1: pid < o.pid ?1:0;
}
return result;
}
und vergleichen Methode der Gruppierung Vergleicher
public int compare(WritableComparable a, WritableComparable b) {
VendorKey one = (VendorKey) a;
VendorKey two = (VendorKey) b;
int result = ClusterUtil.compare(one.getToken(), two.getToken(), ":") >= one.getPercentage() ? 0 : 1;
// if (result != 0)
// return two.getToken().compareTo(one.getToken());
return result;
}
Hat das Reparieren der compareTo-Methode für Sie funktioniert? – aventurin