writable接口

上一篇 / 下一篇  2011-10-17 19:52:10

writable接口定义了两个方法:一个是将其状态写到DataOutput二进制流,另一个从datainput二进制流读取其状态。

类型的比较是非常重要的,因为中间有个基于减排序阶段,hadoop提供的一个优化接口是继承自java comparator的rawcomparaot接口:该接口允许其实现比较数据流中的记录,无须把数据流反序列化为对象,这样避免了新建对象的额外开销。

对整数进行编码时,有两种选择,即定长格式和变长格式。如何在定长格式和变长格式之间进行选择:定长格式非常适合对整个值域空间中分布非常均匀的数据进行编码,如精心设计的哈希函数。变长编码的优点是可以在vintwritablevlongwritable之间转换,因为它们的编码实际上是一致。所以选择变长格式之后,便有增长的空间。

Text类型:
是针对UTF-8序列的writable类。一般可以认为它等价于java.lang.writable。不支持对字节数超过32767的字符串进行编码。

string的长度是其所含char编码单元的个数,但test对象的长度确实其utf-8编码的字节数。相似的,string类中的indexof()方法返回的char编码单元中的索引位置,test类的find()方法返回的则是字节偏移量。

迭代:通过字节偏移量进行位置索引来实现对test类unicode字符的迭代是非常复杂的,因为不能简单的通过增加位置的索引之来实现。bytestocodepoint()方法可以检测出字符串的末尾,返回-1.

易变性:他是可变的,可以通过调用其中一个的set方法来重用text实例。


TAG:

 

评分:0

我来说两句

Open Toolbar