开发者社区> 问答> 正文

Hadoop中二次排序如何自定义分组类?

Hadoop中二次排序如何自定义分组类?

展开
收起
真的很搞笑 2021-12-05 15:13:03 248 0
1 条回答
写回答
取消 提交回答
  • 在Reduce阶段,构造一个与 Key 相对应的 Value 迭代器的时候,只要first相同就属于同一个组,放在一个Value迭代器。定义这个比较器,可以有两种方式。

      分组的实质也是排序,此例子中排序是按照年份和温度,而分组只是按照年份。

       1) 继承WritableComparator。

    public static class KeyComparator extends WritableComparator   必须有一个构造函数,并且重载以下方法。

    public int compare(WritableComparable w1, WritableComparable w2)   2) 实现接口 RawComparator。

      上面两种实现方式,在Job中,可以通过setSortComparatorClass()方法来设置Key的比较类。

    job.setGroupingComparatorClass(GroupingComparator.Class);   另外注意的是,如果reduce的输入与输出不是同一种类型,则 Combiner和Reducer 不能共用 Reducer 类,因为 Combiner 的输出是 reduce 的输入。除非重新定义一个Combiner。

    2021-12-05 15:13:20
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《构建Hadoop生态批流一体的实时数仓》 立即下载
零基础实现hadoop 迁移 MaxCompute 之 数据 立即下载
CIO 指南:如何在SAP软件架构中使用Hadoop 立即下载