Apache Avro 文档概况

Apache Avro™1.11.0:数据序列化与模式解析
Apache Avro是一个数据序列化框架,提供丰富的数据结构、高效的二进制数据格式、容器文件、RPC机制,并强调动态语言的集成。其模式定义使用JSON,便于处理和互操作。Avro的数据不需要预先生成代码,模式伴随数据存在,简化了处理和兼容性问题。相比Thrift和ProtocolBuffers,Avro支持动态类型,减少数据编码的类型信息,避免手动字段ID,提高序列化效率。

文章主题来源于英文源文档 -> Apache Avro™ 1.11.0 文档

Apache Avro™ 1.11.0 Documentation

1. 介绍

Apache Avro™ 是一个数据序列化(data serialization)框架

Avro 提供如下:

  • 丰富的数据结构
  • 一种紧凑、快速的二进制数据格式
  • 一个容器文件,用于存储持久数据
  • 远程过程调用 Remote procedure call (RPC)
  • 与动态语言的简单集成。代码生成不需要读取或写入数据文件,也不需要使用或实现 RPC协议。代码生成作为一种可选的优化,只为静态类型语言实现

2. Schemas(模式)

Avro 依赖于模式。读取 Avro 数据时,写入时使用的模式始终存在。这允许在没有每个值开销的情况下写入每个数据,从而使序列化既快速又小。这也便于使用动态脚本语言,因为数据及其模式是完全自描述的。

当 Avro 数据存储在文件中时,它的模式也随之存储,以便以后任何程序都可以处理文件。如果读取数据的程序需要不同的模式,这很容易解决,因为两种模式都存在。

在 RPC 中使用 Avro 时,客户端和服务器在连接握手中交换模式(这可以优化,使得对于大多数调用,实际上并不传输模式)。由于客户端和服务器都具有对方的完整模式,因此可以轻松解决相同命名字段之间的对应关系,缺少字段,额外字段等.

Avro 模式是用 JSON 定义的。这有助于在已经具有 JSON 库的语言中实现。

3. 与其他框架的比较

Avro 提供类似于 Thrift、Protocol Buffers 等系统的功能。Avro 在以下基本方面与这些系统不同

  • 动态类型:Avro 不需要生成代码。数据总是伴随着一个模式,该模式允许在没有代码生成、静态数据类型等的情况下完全处理该数据。这有助于构建通用数据处理系统和语言。
  • 未标记数据:由于在读取数据时存在模式,因此需要用数据编码的类型信息要少得多,从而导致更小的序列化大小。
  • 没有手动分配的字段 ID:当架构更改时,处理数据时始终存在旧架构和新架构,因此可以使用字段名称象征性地解决差异。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拉风小宇

请我喝个咖啡呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值