hadoop——mr作业中处理字节数组的最佳方法

yx2lnoni  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(405)

我需要在mr作业的比较器中比较字节数组,但找不到处理字节数组的好方法,序列化/反序列化的对象具有以下字段:

  1. public class GeneralKey {
  2. String name;
  3. String type;
  4. ...other String fields ..
  5. }
  6. @Override
  7. public void readFields(DataInput input) throw IOException {
  8. name = input.readUTF();
  9. type = input.readUTF();
  10. ...
  11. }
  12. @Override
  13. public void write(DataOutput output) throws IOException {
  14. output.writeUTF(name);
  15. output.writeUTF(type);
  16. ...
  17. }

序列化的字节数组如下所示:name:[0,0]2 byte,这2 byte表示名称的长度,因为它是0,name是空类型:[0,3,96,97,98]5 byte,前2个字节是类型的长度,表示类型的值是3 bytes长,所以需要读取以下3个字节bytes:96,97,98,这是字符串中的“”。
想知道是否有更好的方法来处理字节数组,可以读取前两个字节作为整数,然后可以决定下一个读取多少字节来将它们转换为字符串。我使用Hadoop1.0.3并在aws中运行作业,我尝试了hbase的bytes类,但由于某些原因,它抛出了class not found错误java.lang.classnotfoundexception:org.apache.hadoop.hbase.util.bytes
如果有其他库,我可以用来处理字节数组容易?谢谢

7lrncoxx

7lrncoxx1#

我使用字节数组作为键和值,但使用了以下内置类型:byteswritable

相关问题