你好,游客 登录
背景:
阅读新闻

Hadoop使用哪种序列化框架?

[日期:2014-11-12] 来源:中国学网   作者:王可 [字体: ]

什么是序列化? 序列化(serialization),是指将结构化对象转化为字节流,以便在网络上传输或写入磁盘进行永久存储。 反序列化(deserialization),是指将字节流重新转换为结构化对象。

hadoop使用哪种序列化框架? Hadoop使用自己的序列化格式Writable,除开Writable,Hadoop也支持Avro序列化框架。 Writable格式紧凑,速度快。,但很难使用除开Java之外的语言对它进行扩展。 Avro支持跨语言使用,意思是,可以用Python写入文件,而用C语言来读取文件。

Hadoop提供的Writable类型 \


Writable接口

view sourceprint?
01.package org.apache.hadoop.io;
02. 
03.import java.io.DataOutput;
04.import java.io.DataInput;
05.import java.io.IOException;
06. 
07.public interface Writable {
08./**
09.* * Serialize the fields of this object to <code>out</code>. * @param out
10.* <code>DataOuput</code> to serialize this object into.
11.*
12.* @throws IOException
13.*/
14.void write(DataOutput out) throws IOException;
15. 
16./**
17.* * Deserialize the fields of this object from <code>in</code>. * *
18.* <p>
19.* For efficiency, implementations should attempt to re-use storage in the *
20.* existing object where possible.
21.* </p>
22.* * * @param in <code>DataInput</code> to deseriablize this object from.
23.*
24.* @throws IOException
25.*/
26.void readFields(DataInput in) throws IOException;
27.}


如何定制writable虽然Hadoop内建了多种Writable供用户选择,但当我们需要使用更加复杂的对象的时候,内建的Writable有可能不能满足我们的需求,这就需要我们定制自己的Writable了。 一个定制的Writable类首先必须实现Writable或者WritableComparable接口,然后为定制的Writable类编写 write(DataOutput out)和readFields(DataInput in)方法,来控制定制的Writable类如何转化为字节流(write方法)和如何从字节流转回为Writable对象。





收藏 推荐 打印 | 录入: | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款