Hadoop-2.4.1学习之RawComparator及其实现

Posted skyWalker_ONLY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop-2.4.1学习之RawComparator及其实现相关的知识,希望对你有一定的参考价值。

      Hadoop支持对序列化的二进制流直接进行比较,相对于将序列化的二进制流反序列化对象再进行比较,显然前者具有更高的效率。而之所以需要对二进制流进行比较是因为Hadoop多个节点上的进程间通信是通过远程过程调用(RemoteProcedure Call Protocol,RPC)实现的,而RPC协议会将消息序列化为二进制流后再发送到远程节点,远程节点接收到二进制流后再反序列化为原始消息,如果对序列化的二进制流直接比较则会提高效率。本篇文章将学习Hadoop中基于字节的比较器RawComparator及其实现。

      RawComparator接口及其实现类的关系如下图所示。RawComparator接口继承自java.util.Comparator<T>,因此除了提供了基于字节比较的方法外,该接口还提供对象比较的方法。实际上,在RawComparator的很多实现类中,在基于字节比较的方法中,最终都调用了对象比较的方法。下面就对该接口及其实现做个简要的介绍。


      RawComparator:对对象的字节表示进行比较的接口,该接口的唯一方法是int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2),其中b1为第一个对象所在的字节数组,s1为该对象在b1中的起始位置,l1为对象在b1中的长度,b2为第一个对象所在的字节数组,s2为该对象在b2中的起始位置,l2为对象在b2中的长度。

      DeserializerComparator<T>:抽象类,该类实现了Raw

以上是关于Hadoop-2.4.1学习之RawComparator及其实现的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop-2.4.1学习之高可用ResourceManager

Hadoop-2.4.1学习之FileSystem及实战

Hadoop-2.4.1学习之Writable及其实现

Hadoop-2.4.1学习之InputFormat及源代码分析

Hadoop-2.4.1学习之InputFormat及源代码分析

Hadoop-2.4.1学习之RawComparator及其实现