MapReduce-自定义比较器

接着上一篇 MapReduce-三次排序-曾经想不通的二次排序把其实例的需求改变一下,来说明如何定制GroupingComparatorClass和SortComparatorClass
下面就完成这篇博客要完成的问题
测试数据如下:
id,name,cost
1,mr1,3234
2,mr2,123
3,mr3,9877
4,mr4,348
5,mr5,12345
6,mr6,6646
7,mr7,98
8,mr8,12345
1,mr1,334
2,mr2,3123
3,mr3,97
4,mr4,231
5,mr5,122
6,mr6,3455
7,mr7,1222
8,mr8,12345
4,mr4,123
达到的效果:
找出每个用户的消费情况并从高到低排序
mr1     3234,334
mr2     3123,123
mr3     9877,97
mr4     348,231,123
mr5     12345,122
mr6     6646,3455
mr7     1222,98

mr8     12345,12345

自定义步骤:

1.如何自定义key比较函数类。这是key的第二次比较。这是一个比较器,需要继承WritableComparator。 
public static class SortComparator extends WritableComparator 
必须有一个构造函数,并且重载 public int compare(WritableComparable w1, WritableComparable w2) 
另一种方法是 实现接口RawComparator。 
在job中设置使用setSortComparatorClass。  
2.如何自定义分组函数类。
在reduce阶段,构造一个key对应的value迭代器的时候,只要first相同就属于同一个组,放在一个value迭代器。这是一个比较器,需要继承WritableComparator。 
public static class GroupingComparator ext

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值