本文主要是介绍Apache Avro是什么?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
写在前面
本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和文献引用请见100个问题搞定大数据理论体系
解答
Apache Avro(以下简称Avro)是一种与编程语言无关的序列化格式。
Avro是Hadoop生态系统中的序列化及RPC框架,设计之初的意图是为 Hadoop提供一个高效、灵活且易于演化的序列化及RPC基础库,目前已经发展成一个独立的项目。
Avro数据通过与语言无关的 schema来定义。
schema通过JSON来描述,数据被序列化成二进制文件或JSON文件,不过一般会使用二进制文件。
Avro在读写文件时需要用到schema, schema一般会被内嵌在数据文件里。
Avro有一个很有意思的特性是,当负责写消息的应用程序使用了新的 schema,负责读消息的应用程序可以继续处理消息而无需做任何改动,这个特性使得它特别适合用在像Kafka这样的消息系统上。
补充
相比于Thrift和Protobuf,Avro具有以下几个特点:
- 动态类型:Avro不需要生成代码,它将数据和schema存放在一起,这样数据处理过程并不需要生成代码,方便构建通用的数据处理系统和语言。
- 未标记的数据:读取Avro数据时schema是已知的,这使得编码到数据中的类型信息变少,进而使得序列化后的数据量变少。
- 不需要显式指定域编号:处理数据时新旧schema都是已知的,因此通过使用字段名称即可解决兼容性问题。
这篇关于Apache Avro是什么?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!