自定义Hadoop Writable(3)

从上面的可以看到继承了BinaryComparable,BinaryComparable是一个抽象类,需要我们实现下面两个方法:

/**
  * Return n st bytes 0..n-1 from {#getBytes()} are valid.
  */ 
 public abstract int getLength(); 
 
 /**
  * Return representative byte array for this instance.
  */ 
 public abstract byte[] getBytes(); 

主要是用于获取需要读写数据的byte数组和对应的长度,从具体的compare逻辑在BinaryComparable已经实现,直接使用byte数组来比较,我们的自定义Writable只需要在write和readFields读取对应的值。这个去掉了compare过程中的反序列化操作,因为反序列化是很耗CPU的,因此性能就有了很大的提升。

最后是WritableComparator注册自定义Writable。

Hadoop中其实已经了有了一些比较通用的Writable,如BytesWritable等。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/1048eb3d0c0da8e0ff8e3d761beb1acc.html