首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是数据序列化系统?

什么是数据序列化系统?
EN

Stack Overflow用户
提问于 2010-03-21 18:34:44
回答 2查看 14.6K关注 0票数 18

根据Apache AVRO项目,"Avro是一个序列化系统“。说到数据序列化系统,是不是意味着avro是一个产品或api?

另外,我也不确定什么是数据序列化系统?目前,我的理解是它是一个定义数据对象如何在网络上传递的协议。有没有人可以帮助以一种直观的方式解释它,让有限的分布式计算背景的人更容易理解?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-22 12:20:31

因此,当Doug Cutting编写Hadoop时,他认为使用Java对象序列化(Java Serialization)来序列化Java对象的标准Java方法不能满足他对Hadoop的要求。也就是说,这些要求是:

  1. 将数据序列化为紧凑的二进制格式。
  2. 在性能和允许数据被的速度方面都是fast,以便更轻松地插入其他语言。

正如他所描述的Java序列化:

它看起来又大又多毛,我想我们需要一些精干和刻薄的东西

他们没有使用Java序列化,而是编写了自己的序列化框架。Java序列化的主要问题是,它将序列化的每个对象的类名写入流,该类的每个后续实例都包含对第一个对象的5字节引用,而不是对类名的引用。

除了减少流的有效带宽之外,这还会导致随机访问以及序列化流中记录排序的问题。因此,Hadoop序列化不会写入类名或所需的引用,并假设客户端知道预期的类型。

Java Serialization还为每个反序列化的对象创建一个新对象。实现Hadoop序列化的Hadoop Writables可以重用。因此,有助于提高MapReduce的性能,它重点序列化和反序列化数十亿条记录。

Avro适合Hadoop,因为它以不同的方式实现序列化。客户端和服务器交换描述数据流的方案。这使得它更快,更紧凑,更重要的是,它更容易将语言混合在一起。

因此,Avro定义了一种序列化格式,一种供客户端和服务器通信的协议,以及一种将数据紧凑地保存在文件中的方法。

我希望这能帮到你。我想了解一下Hadoop的历史会有助于理解为什么Avro是Hadoop的一个子项目,以及它对我们有什么帮助。

票数 30
EN

Stack Overflow用户

发布于 2014-11-26 19:01:35

如果您必须将层次结构或数据结构实现细节等信息存储在有限的文件中,并通过网络传递这些信息,则可以使用数据序列化。它接近于理解xml或json格式。这样做的好处是,转换成任何序列化格式的信息都可以反序列化,以重新生成类、对象、数据结构,无论序列化了什么。

代码语言:javascript
运行
复制
actual implementation-->serialization-->.xml or .json or .avro --->deserialization--->imlementation in original form

Here是指向序列化格式列表的链接。如果您想了解更多信息,请留言!:)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2486721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档