Hadoop读书笔记----(四)序列化

 Hadoop 分布式计算,序列化是Hadoop通过RPC调用,使得每个节点之间有效沟通的方法。

于是序列化就成为了分布式计算的一个重要课题。

序列化之后,对于分布式计算还需要排序。因此排序也相当重要:

Hadoop要求对象在序列化之后的字节也能够支持排序,以提高计算速度,还不必产生很多无谓的数据。

 

下面两张图记录了JAVA原生类型转化成序列化以后所占的字节数


Hadoop读书笔记----(四)序列化

 


 
Hadoop读书笔记----(四)序列化

 

 

Hadoop里关于Writeable 相关类 的继承树:

 

 
Hadoop读书笔记----(四)序列化

A,Text类相当于 java.lang.String,不同的是Text用的是UTF-8的编码来解析的。

也就是说在Indexing的时候会和String有不一样地方:

举例:


System.out.println(s.length())

输出为5

 


System.out.println(s.getLength())

输出为10

 

联系:

String 的charAt返回 char所在的第几个为止========== Text的find()方法与之效果一样

String 的 codePointAt 返回unicode地址   ========== Text 的charAt()返回 unicode 地址

 

举例: 

String s = "\u0041\u00DF\u6771\uD801\uDC00";

assertThat(s.codePointAt(3), is(0x10400));

输出: true

 

Text s = "\u0041\u00DF\u6771\uD801\uDC00";

assertThat(t.charAt(6), is(0x10400));

输出: true (此输出与 String.codePointAt()效果一样)

 

B,NullWritable 单例

 

你可能感兴趣的:(hadoop,读书)