如何实现WritableComparable接口?

时间:2015-04-01 11:03:41

标签: hadoop

我需要在Job中使用方法setGroupingComparatorClass,它需要一个WritableComparable类型的参数。

我无法实施WritableComparable课程。

请帮我解决这个问题。此致,Bidyut

1 个答案:

答案 0 :(得分:1)

    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);
        }

    }
}

希望这可以帮到你。