zoukankan      html  css  js  c++  java
  • Writable和Comparable

    WritableComparable接口相当于继承了上述两个接口的新接口 :

    Public interface WritableComparable<T>extends Writable,Comparable<T>

    Writable接口:

    基于DataInputDatOutput的简单高效可序列化接口,就是org.apache.hadoop.io.Writable接口。

     几乎所有的hadoop可序列化对象都必须实现这个接口有2个方法:

     WritereadFiles。

    WritableComparable接口:

    类似javaComparable接口,用于类型的比较。MR其中一个阶段叫排序,默认使用Key来排序。Hadoop提供了一个优化接口RawComparator

     Public interface RawComparator<T> extends Comparator<T>{

      Public int compare(byte[]  b1,int s1,int l1,byte[] b2,int s2,int l2);

    }

    可以比较b1b2,允许执行者直接比较数据流记录,而无须先把数据流反序列化成对象,这样可以避免新建对象的开销 。

    Writable

    ArrayWritable                  

    TwoDArrayWritable

    MapWritable

    SortedMapWritable

    BooleanWritable

    ByteWritable

    IntWritable

    VIntWritable

    FloatWritable

    LongWritable

    VLongWritable

    DoubleWritable

    NullWritable

    Text

    BytesWritable

    MD5Hash

    ObjectWrtiable

    GenericWritable

    Text

      存储的数据按照UTF-8,类似String,它提供了序列化,反序列化和字节级别比较的方法。Text类替换了UTF8类。 1.unicode编码是一个很大的集合,可以容纳100多万个符号。具体的符号对应表可以查询unicode.org 它只规定了符号的二进制代码,没有规定如何存储,而utf-8就是unicode的实现还有utf16等。对于单个字符字节第一位为0,后面7位为这个符号的unicode码。因此对于英语字母,utf-8编码和ASCII码是相同的。所有u0001~u007f会以单字节储存。u0080~u07ff的unicode会以双字节储存,u0800~uFFFF的会以3字节存储。

  • 相关阅读:
    Spring Bean(一)
    Spring IOC(一)
    三种常用的查找算法
    分布式架构的一致性
    Java内存区域笔记(一)
    分组交换和电路交换
    Python说文解字_Python之多任务_03
    Python说文解字_Python之多任务_02
    Python说文解字_Python之多任务_01
    Python说文解字_杂谈09
  • 原文地址:https://www.cnblogs.com/luminous1/p/8361543.html
Copyright © 2011-2022 走看看