Avro简介

Avro是一种支持多语言的数据序列化框架,它弥补了Writable仅支持Java的局限。Avro允许可选的代码生成,并将模式与数据一同存储,简化了数据处理流程。此外,Avro支持JSON格式的schema及二进制编码的数据,方便跨语言实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请写明来源地址:
[url]http://blog.youkuaiyun.com/lastsweetop/article/details/9448961[/url]
所有源码在github上[url]https://github.com/lastsweetop/styhadoop[/url]


Avro是个支持多语言的数据序列化框架,支持c,c++,c#,python,java,php,ruby,java。
他的诞生主要是为了弥补Writable只支持java语言的缺陷。

很多人会问类似的框架还有Thrift和Protocol,那为什么不使用这些框架,而要重新建一个框架呢,
或者说Avro有哪些不同。首先,Avro和其他框架一样,数据是用与语言无关的schema描述的,不
同的是Avro的代码生成是可选的,schema和数据存放在一起,而schema使得整个数据的处理过
程并不生成代码、静态数据类型等,为了实现这些,需要假设读取数据的时候模式是已知的,这样
就会产生紧耦合的编码,不再需要用户指定字段标识。

Avro的schema是JSON格式的,而编码后的数据是二进制格式(当然还有其他可选项)的,这样对
于已经拥有JSON库的语言可以容易实现。

Avro还支持扩展,写的schema和读的schema不一定要是同一个,也就是说兼容新旧schema和新旧
客户端的读取,比如新的schema增加了一个字段,新旧客户端都能读旧的数据,新客户端按新的sch
ema去写数据,当旧的客户端读到新的数据时可以忽略新增的字段。

Avro还支持datafile文件,schema写在文件开头的元数据描述符里,Avro datafile支持压缩和分割,这
就意味着可以做Mapreduce的输入。

突然发现,简介真够简的,详细的内容,之后的章节补充吧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值