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

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

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

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

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

 

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


 


 

 

 

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

 

 

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 单例

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值