2013-08-29 36 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