我需要在Job中使用方法setGroupingComparatorClass
,并且它需要使用WritableComparable
类型的参数。
我无法实现WritableComparable
类。
请帮我解决这个问题。问候,Bidyut
最佳答案
setGroupingComparatorClass(Class<? extends RawComparator> cls)
定义比较器,该比较器控制针对一次Reducer.reduce(Object,Iterable,org.apache.hadoop.mapreduce.Reducer.Context)的调用将哪些键分组在一起的比较器。
job.setGroupingComparatorClass(CustomKey.GroupComparator.class);
在您的Customkey类中,您可以编写静态方法。
在自定义键类中添加以下代码。
public class Customkey implements WritableComparable<IndexerKey> {
public static class GroupComparator extends WritableComparator
implements Serializable {
private static final long serialVersionUID = -3385728040072507941L;
public GroupComparator() {
super(Customkey .class, true);
}
@SuppressWarnings("rawtypes")
public int compare(WritableComparable a, WritableComparable b) {
Customkey w1 = (Customkey ) a;
Customkey w2 = (Customkey ) b;
return w1.compareGroup(w2);
}
}
}
希望这可以对您有所帮助。
关于hadoop - 如何实现WritableComparable接口(interface)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29389117/