2013-08-29 70 views
0

我需要比較MR作業比較器中的字節數組,但找不到處理字節數組的好方法,序列化/反序列化的對象有以下字段:MR作業中處理字節數組的最佳方法

public class GeneralKey { 
    String name; 
    String type; 
    ...other String fields .. 
} 

@Override 
public void readFields(DataInput input) throw IOException { 
    name = input.readUTF(); 
    type = input.readUTF(); 
    ... 
} 

@Override 
public void write(DataOutput output) throws IOException { 
    output.writeUTF(name); 
    output.writeUTF(type); 
    ... 
} 

的串行化字節數組看起來這樣: 名:[0,0] 2字節,這2個字節的代表名稱的長度,因爲它是0,名稱爲空 類型:[0,3,96 ,97,98] 5個字節,前2個字節是類型的長度,意味着類型的值是3個字節長,所以需要讀取以下3個字節:96,97,98,這是字符串中的'abc'。

想知道是否有更好的方法來處理可以將前兩個字節作爲整數讀取的字節數組,然後可以決定要將其轉換爲字符串的下一個字節。我使用hadoop 1.0.3並在AWS中運行作業,我嘗試了hbase的Bytes類,但由於某種原因它向我扔了Class not found錯誤 java.lang.ClassNotFoundException:org.apache.hadoop.hbase.util.Bytes

如果有其他我可以用來輕鬆處理字節數組的庫嗎?感謝

回答

0

我用一個字節數組作爲鍵和值,但使用以下的內置類型: BytesWritable