分组排序案例分析| 学习笔记

开发者学堂课程【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 聚合成组,然后取第一个即是该订单中最贵商品,如图所示:

分组排序案例分析| 学习笔记

上一篇:分组排序案例扩展| 学习笔记


下一篇:Apache Hive--DML--insert&多重插入&动态分区| 学习笔记