从自定义比较器(实现RawComparator接口的方式)总结的经验

Posted atbruce

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从自定义比较器(实现RawComparator接口的方式)总结的经验相关的知识,希望对你有一定的参考价值。

在MR中我们在Map阶段的排序可是通过两种方式

要比较的值为key

1)实现WriteComparator接口---比较简单使用

2)自定义比较器(实现RawComparator接口)

这里我们介绍一下第二种方式

1、我们要自定义一个比较器实现RawComparator接口

技术图片

 

2、重写方法

技术图片

 

 技术图片

为什么有两个方法呢?追一下源码

技术图片

RawComparator接口继承了Comparator,所以有两个方法

第一个方法中,我们可以有如下理解:

1、这个方法先被调用

2、在此方法中,将字节数组中的数据先封装成要比较的类型,在调用第二个方法

3、比较封装好的类型

那么字节数组的封装如何编写呢?

我们可以通过找RawComparator的实现类,看那个实现类中的方法是如何写的,按照那个来编写即可(注意体会这种编程思想)

技术图片

当自定义比较器写好后,在Driver中设置比较器为自定义比较器即可。

 技术图片

 

以上是关于从自定义比较器(实现RawComparator接口的方式)总结的经验的主要内容,如果未能解决你的问题,请参考以下文章

Spring MVC:如何从自定义接口实现 DAO

如何从自定义实现中引用“正常”弹簧数据存储库?

Java:PriorityQueue 从自定义比较器返回不正确的顺序? [复制]

如何从自定义 ModelBinder 中的正文获取数据?

Hadoop 分片分组与排序

从自定义视图访问 RelativeLayout 时出现 NullPointerException