首页 > 其他 > 详细

mapreduce 中 groupingComparator 用法

时间:2021-04-15 23:41:53      阅读:21      评论:0      收藏:0      [点我收藏+]

groupingComparator是对reduce输入的数据进行分组,比如

    public int compare(WritableComparable a, WritableComparable b) {
        OrderJoin a1 = (OrderJoin) a;
        OrderJoin b1 = (OrderJoin) b;

        // 对pdt_code进行分组,返回0则代表是一组,其他随便返回一个值就行
        // 经过调试发现此方法并不是将所有输入的key全部重新排序再把相同的合并,而是将前后连着的俩个key进行判断是否合并
        // 即输入的key有a,b,c,d,e 那么 只会调用compare方法4次,即(a,b) (b,c) (c,d) (d,e)
        // 所以并不是我们想象的重新全排序在合并,而是基于前后顺序比较在判断是否合并
        // 所以要想实现分组,则Map端传过来的分组的key是必须要经过排序的才适合GroupingComparator分组
        if (a1.getPdt_code().equals(b1.getPdt_code())){
            return 0;
        } else {
            return 1;
        }
    }

总结:

         对pdt_code进行分组,返回0则代表是一组,其他随便返回一个值就行
         经过调试发现此方法并不是将所有输入的key全部重新排序再把相同的合并,而是将前后连着的俩个key进行判断是否合并
         即输入的key有a,b,c,d,e 那么 只会调用compare方法4次,即(a,b) (b,c) (c,d) (d,e)
         所以并不是我们想象的重新全排序在合并,而是基于前后顺序比较在判断是否合并
         所以要想实现分组,则Map端传过来的分组的key是必须要经过排序的才适合GroupingComparator分组

mapreduce 中 groupingComparator 用法

原文:https://www.cnblogs.com/caiba/p/14664582.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!