java与hadoop序列化与反序列化的比较
发布日期:2021-06-29 12:30:37
浏览次数:2
分类:技术文章
本文共 3086 字,大约阅读时间需要 10 分钟。
在hadoop中,hadoop实现了一套自己的序列化框架,hadoop的序列化相对于JDK的序列化来说是比较简洁而且更节省存储空间。在集群中信息的传递主要就是靠这些序列化的字节序列来传递的所以更快速度更小的容量就变得非常地重要了。
先用java来看:
package hdfs;import java.io.Serializable;public class People implements Serializable { private static final long serialVersionUID = 1L; private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public People(){} public People(int age, String name) { super(); this.age = age; this.name = name; }}
package hdfs;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.ObjectOutputStream;public class TestJDKSeriable { public static void main(String[] args) { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(new People(19, "zhangsan")); System.out.println("字节大小:"+baos.size()); oos.close(); baos.close(); } catch (IOException e) { e.printStackTrace(); } }}
得到结果:字节大小:81
再用hadoop来看:
package hdfs;import java.io.DataInput;import java.io.DataOutput;import java.io.IOException;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.io.WritableComparable;public class PeopleWritable implements WritableComparable{ private IntWritable age; private Text name; public PeopleWritable(){ } public PeopleWritable(IntWritable age, Text name) { super(); this.age = age; this.name = name; } public IntWritable getAge() { return age; } public void setAge(IntWritable age) { this.age = age; } public Text getName() { return name; } public void setName(Text name) { this.name = name; } public void write(DataOutput out) throws IOException { age.write(out); name.write(out); } public void readFields(DataInput in) throws IOException { age.readFields(in); name.readFields(in); } public int compareTo(PeopleWritable o) { int cmp = age.compareTo(o.getAge()); if(0 !=cmp)return cmp; return name.compareTo(o.getName()); }}
package hdfs;import java.io.IOException;import org.apache.hadoop.io.DataOutputBuffer;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;public class TestHadoopSeriable { public static void main(String[] args) { try { DataOutputBuffer dob = new DataOutputBuffer(); PeopleWritable pw = new PeopleWritable(new IntWritable(19), new Text("zhangsan")); pw.write(dob); System.out.println("字节大小:"+dob.getLength()); dob.close(); } catch (IOException e) { e.printStackTrace(); } }}
结果为:字节大小:13
由此可以看出同样的数据,在Jdk 序列化字节占用了89个,而在hadoop序列化中却只使用了13个字节。大大节省了空间和集群传输效率。
具体见:
转载地址:https://bupt-xbz.blog.csdn.net/article/details/79178175 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月03日 01时53分38秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
架构师知识体系全景图
2019-04-29
guava中EventBus(事件总线)源码分析与使用
2019-04-29
程序员成神之路文章目录
2019-04-29
SASS软件的成熟度模型总结
2019-04-29
一次搞定redis使用
2019-04-29
最全架构设计实践方法论: 微服务
2019-04-29
Linux下简单几步安装AI开发环境-ROS(超有意思)
2019-04-29
epoll详解
2019-04-29
linux入门--磁盘管理之分区、格式化与挂载
2019-04-29
鸿蒙(二)基于小熊派实现LOT上云的智慧家居项目
2019-04-29
开发必备:HTTP 及 TLS
2019-04-29
Windows 11答疑:大家最关心的10个问题
2019-04-29
select、poll、epoll之间的区别
2019-04-29
Shopify!Shopify!Shopify!
2019-04-29
这是美国MarTech最大的一家独立公司:HubSpot
2019-04-29
从开发到产出:关于机器学习的七则干货建议
2019-04-29
你想成为数据科学家吗?不要把机器学习当成入门第一课
2019-04-29
你想成为数据科学家吗?不要把机器学习当成入门第一课
2019-04-29
现代社会悖论:信息泛滥是一只不守规矩的野兽
2019-04-29
如何设计自己的第一个加密交易机器人?
2019-04-29