Avro自称是一个数据序列化系统。它是一种用于序列化和交换数据的开源数据格式。即使它是 Hadoop 项目的一部分,您也可以在任何应用程序中使用它,无论有无 Hadoop 库。Avro 的序列化适用于数据文件和消息。
Avro 是基于行的,因此它将每条记录的所有字段存储在一起。这使其成为需要一起访问记录的所有字段的情况的最佳选择。
Avro 以二进制格式存储数据,并将数据定义存储在 JSON 字典中。它将数据和模式放在一个文件或消息中,因此程序处理数据所需的一切都在一个地方。与 Protocol Buffers 等类似系统不同,Avro 客户端不需要生成代码来读取消息。这使得 Avro 成为脚本语言的绝佳选择。
Avro 的主要优势之一是通过一种称为模式演化的机制对模式更改的强大支持。此功能使 Avro 能够优雅地处理丢失的、新的和更改的字段,从而使 Avro 数据向后和向前兼容。
当 Avro 解码数据时,它可以使用两种不同的模式。一个来自编码数据,反映出版商编码的内容,另一个来自读者,表明他们的期望。Avro 将计算出差异,以便读者获得可用的结果。
Avro 支持基本数据类型(布尔、整数、长整数和字符串)、复杂数据类型(枚举、映射、数组和用户定义的记录)和嵌套数据类型。
数据格式具有适用于 Java、Python、Ruby、C、C++、Perl 和 PHP 的 API。一种语言序列化的数据可以被另一种语言使用,Avro 的 C 接口意味着它可以从许多其他语言中调用。