开发者学堂课程【Hadoop 分布式计算框架 MapReduce:分组排序案例分析】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/94/detail/1529
分组排序案例分析
简介:
1、GroupingComparator 分组(辅助排序)
2、MapReduce 详细工作流程(二)
3、GroupingComparator 分组案例实操
1.GroupingComparator 分组(辅助排序)
对 Reduce 阶段的数据根据某一个或儿个字段进行分组。
分组排序步骤:
(1)自定义类继承 WritableComparator
(2)重写 compare() 方法
@override
public int compare(WritableComparable a,writableComparable b)
{
//比较的业务逻辑
sreturn result;
}
(3)创建一个构造将比较对象的类传给父类
protected orderGroupingComparator () {
super (orderBean.class, true) ;
}
2.MapReduce 详细工作流程(二)
3.GroupingComparator 分组案例实操
1、需求
有如下订单数据
现在需要求出每一个订单中最贵的商品
(1)输入数据
(2)期望输出数据
1 222.8
2 722.4
3 232.8
2、需求分析
(1)利用“订单 id 和成交金额”作为 key,可以将 Map 阶段读取到的所有订单数据按照 id 升序排序,如果 id 相同再按照金额降序排序,发送到 Reduce。
(2)在 Reduce 端利用 groupingComparator 将订单 id 相同的 kv 聚合成组,然后取第一个即是该订单中最贵商品,如图所示: