Hadoop的序列化

1、對象的序列化:將對象編碼成一個字節流,以及從字節流中重新構建對象。

2、java內建的序列化機制

      在Java中,只需要在類聲明中加入 implements Serializable即可。具體操作如在對象流ObjectOutputStream對象上調用writeObject()等。Java序列化參見《Java Object Serialization Specification》中的規範。

      缺點是序列化輸出中保存了大量的附加信息,導致序列化結果膨脹。

3、Hadoop序列化機制

      其需要具有緊湊、快速、可擴展、互操作等特徵。

   

      3.1  Hadoop Writable機制

              public  interface Writable{

                        void write(DataOutput out) throws IOException;

                        void readFields(DataInput in) throws IOException;

      }

     使用例如,out.writeLong(Id) ,  id = in.readLong()

    Hadoop序列化機制中還包括了另外幾個重要的接口:WritableComparable、RawComparator和WritableComparator;

    WritableComparable:ByteComparable、IntWritable、DoubleWritable

    RawComparator:它是一個泛型類,允許執行者比較流中讀取的未被反序列化爲對象的記錄,從而省去了創建對象的所有開銷,接口包含

                                       public  int compare(byte[]  b1 , int s1 , int l1 , byte[] b2 , int s2 , int l2)方法。

     WritableComparator:它是RawComparator對WritableComparable類的一個通用實現,它提供了一個RawComparator的compare()方法

                                   的默認實現;充當了RawComparator實例的一個工廠方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章