En Hadoop tri secondaire le code composite a la méthode suivante pour comparer les valeurs, la classe clé Composite implémente WritableComparable
: -Hadoop secondaire Trier compareTo clé composite vs personnalisée Sorter comparer les implémentations
@Override
public int compareTo(CustomKey o) {
int result = firstName.compareTo(o.getFirstName());
log.debug("value is " + result);
if (result == 0) {
return lastName.compareTo(o.getLastName());
}
return result;
}
Dans le trieur personnalisé nous créons pour effectuer des tri secondaire qui s'étend WritableComparator
et le code va comme ceci: -
@Override
public int compare(WritableComparable w1, WritableComparable w2) {
CustomKey key1 = (CustomKey) w1;
CustomKey key2 = (CustomKey) w2;
int value = key1.getFirstName().compareTo(key2.getFirstName());
if (value == 0) {
return -key1.getLastName().compareTo(key2.getLastName());
}
return value;
}
Je veux savoir pourquoi nous comparons les valeurs deux fois pour le tri une fois dans CustomKey
classe par œuvre mentant WritableComparable
puis nous créons à nouveau une classe CustomSorter
pour trier la valeur en étendant WritableComparator
.
Pouvez-vous fournir la référence d'où vous avez pris ce code? – YoungHobbit