自定义比较器 GroupingComparator
其实就是自己定义MapReduce的比较规则 : 在Map任务完成后 进入shuffle阶段 会根据MR默认的比较规则 将Map任务输出的key-value
值,根据他们key值的不同 将相同的key分为一组。 这也是为什么Reduce任务中 reduce方法的参数是一个key
和一个迭代器
的value 。 就是根据默认的比较器将key值相等的key-value分为一组。
而有时候我们想要自己定义一个比较器而不是用默认的根据key值是否相等比较 ,我们可以自己定义一个比较器
案例如下:
有如下的订单数据:
1 Pdt_01 222.8
1 Pdt_02 52.8
2 Pdt_03 522.8
2 Pdt_04 122.4
2 Pdt_05 722.4
3 Pdt_06 232.8
3 Pdt_02 33.8
现在要求输出每一个订单中的最贵的商品
代码如下:
package com.jee.groupingcomparator;
import org.apache.hadoop.io.WritableComparable;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
//订单类
public class Order implements WritableComparable<Order> {
private String orderId;
private String orderName;
private double price;
public Order(String orderId, String orderName, double price) {
this