Avro 是一个开源项目,用于为 Hadoop 提供数据序列号和数据交换服务。 这些服务可以一起使用,也可以单独使用。 Avro 简化了在以任何语言编写的程序之间交换大数据的过程。 借助序列化服务,程序可以将数据高效地序列化为文件或消息。 数据存储非常紧凑且高效。 Avro 将数据定义和数据存储在一条消息或一个文件中。
Avro 以 JSON 格式存储数据定义,使其便于阅读和解释;数据本身以二进制格式存储,以达到紧凑且高效的目的。 Avro 文件包含可用于将大型数据集拆分为适用于 Apache MapReduce 处理的子集的标记。 一些数据交换服务使用代码生成器来解释数据定义并生成代码以访问数据。 Avro 不需要此步骤,因而成为脚本编制语言的理想之选。
Avro 的一个主要功能是可对随时间变化的数据模式(通常称为模式演进)提供强大支持。 Avro 可处理类似缺少字段、添加字段和更改字段等的模式更改;因此,原有程序可读取新数据,新程序也可以读取原有数据。 Avro 包含适用于 Java、Python、Ruby、C、C++ 等的 API。 通过 Avro 存储的数据可从不同语言编写的程序进行传递,甚至从诸如 C 这样的编译式语言传递到 Apache Pig 一类的脚本编制语言。