Avro 简介

这是一篇翻译自 http://hadoop.apache.org/avro/docs/current/index.html 的介绍 Avro 的文章。翻译经验不多,有不妥之处还望多多指正。

介绍

Avro 是一个数据序列化系统。

 

Avro 提供了:

  • 丰富的数据结构。
  • 一个简约的、快速的、二进制数据格式。
  • 一个容器文件,用于存储持久数据。
  • 远程过程调用(RPC)。
  • 和其他动态语言的简单集成。存取数据文件或者使用 RPC 协议的时候不需要生成代码。代码生成只是作为静态类型语言的一个可选的优化项。

模式

Avro 依赖于模式。当 Avro 数据被读取时,可以获得写数据时使用到的模式。这就不必为写入的每一个数据花费额外的开销,使序列化变得小而快。由于数据和它的模式都是自描述的,促进了动态、脚本语言的使用。

 

Avro 数据和模式一起被存在文件中,因此数据文件可以在随后被任何程序处理。当一个读取数据的程序希望一个不同的模式,可以同时使用两种模式来解决。

当 Avro 被使用在 RPC 中时,客户端和服务器端在连接的握手阶段就交换模式。(这样对于大多数的调用,不需要再传送模式。)由于客户端和服务器端都拥有对方的全部模式,可以很容易的解决相同名字域、缺失域、额外域之间的对应。

Avro 的模式由 JSON 定义,这可以促进那些拥有 JSON 库的语言更容易使用 Avro。

和其他系统的比较

Avro 提供的功能和其他的一些系统比如 Thrift, Protocol Buffers 类似。和其他系统不同的地方在于:
1. 动态类型。Avro 不需要生成代码,这有利于搭建通用的数据处理系统以及语言。
2. 未加标签的数据。因为模式能在读取数据的时候读取,很自然的,在对数据进行编码的时候只需要保留更少的类型信息,这有利于减少序列化后的数据大小。
3. 没有手工分配的域标识。当一个模式发生改变时,在处理数据的时候可以同时看到新旧两种模式,使用符号化表示的域名就可以解决这种差异。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值