在 Hadoop 二级排序中,Composite 中的代码具有以下比较值的方法,Composite 键类实现WritableComparable
:-
@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;
}
在我们创建的用于执行扩展WritableComparator
的二级排序的自定义排序器中,代码如下所示:-
@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;
}
我想知道为什么我们CustomKey
通过实现来比较值两次以便在类中排序一次WritableComparable
,然后我们CustomSorter
再次创建一个类来通过扩展对值进行排序WritableComparator
。