hadoop 排序比较器 class 有什么用?
What is the hadoop sort comparator class for?
我已经实现了 hadoop 排序比较器 class 来对我的键进行排序。我知道它用来比较每个键。但是,我不知道它如何详细工作?是不是真的,如果用来比较?
谢谢大家....
说,你的钥匙是 (Attribute1, Attribute2)
。现在您可以使用排序比较器,首先按 Attribute1 排序,然后按 Attribute2 排序。
例如,
Key = (2008,32) // year, temperature
现在,如果你想按年份排序,然后按温度排序,你可以使用排序比较器,如下所示:
public static class KeyComparator extends WritableComparator {
protected KeyComparator() {
super(CompositeKey.class, true);
}
@Override
public int compare(WritableComparable w1, WritableComparable w2) {
CompositeKey ip1 = (CompositeKey) w1;
CompositeKey ip2 = (CompositeKey) w2;
int result = CompositeKey.compare(ip1.getYear(), ip2.getYear());
if (result != 0) {
return result;
}
return CompositeKey.compare(ip1.getTemperature(), ip2.getTemperature());
}
}
我已经实现了 hadoop 排序比较器 class 来对我的键进行排序。我知道它用来比较每个键。但是,我不知道它如何详细工作?是不是真的,如果用来比较?
谢谢大家....
说,你的钥匙是 (Attribute1, Attribute2)
。现在您可以使用排序比较器,首先按 Attribute1 排序,然后按 Attribute2 排序。
例如,
Key = (2008,32) // year, temperature
现在,如果你想按年份排序,然后按温度排序,你可以使用排序比较器,如下所示:
public static class KeyComparator extends WritableComparator {
protected KeyComparator() {
super(CompositeKey.class, true);
}
@Override
public int compare(WritableComparable w1, WritableComparable w2) {
CompositeKey ip1 = (CompositeKey) w1;
CompositeKey ip2 = (CompositeKey) w2;
int result = CompositeKey.compare(ip1.getYear(), ip2.getYear());
if (result != 0) {
return result;
}
return CompositeKey.compare(ip1.getTemperature(), ip2.getTemperature());
}
}