hadoop之BinaryComparable與BytesWritable

  對於二進制的序列化,hadoop的封裝類型爲 BytesWritable, BytesWritable 是對二進制數據數組的封裝,它的序列化格式爲 1 個用於指定後面數據字節數的整數域( 4 字節),後跟字節自己,例如長度爲 2 的字節數組

l      數組包含了數值35,序列化形式爲14字節的整數(00000002)和該數組中的兩個字節(03)和(05數組

BytesWritable的實現依賴於其抽象了的BinaryComparable,而並非直接的去實現序列化接口WritableComparable這個接口,而是由抽象類BinaryComparable(實現了Comparable口)的抽象類的子類實來實現,即在中間抽離出一個抽象類,由抽象類的子類去實現hadoop二進制的序列化。oop

BinaryComparable抽象類重載了兩個compareTo方法,而且藉助WritableComparator的靜態方法實現比較,該抽象類用於二進制數據的比較,默認重載了兩個compareTo方法,其類圖關係爲:spa




值得注意的是getBytes()方法返回的字節數組長度可能沒法體現BytesWritable所存儲的容量,由於能夠經過setCapacity()設置容量大小,因此能夠經過getLength()方法來肯定BytesWritable的大小。接口

相關文章
相關標籤/搜索