我需要在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/

10-16 01:15