hadoop深入研究:(十四)——Avro简介

时间:2021-09-08 20:46:05

转载请写明来源地址:http://blog.csdn.net/lastsweetop/article/details/9448961

所有源码在github上,https://github.com/lastsweetop/styhadoop


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的输入。


突然发现,简介真够简的,详细的内容,之后的章节补充吧。


如果我的文章对您有帮助,请用支付宝打赏:
hadoop深入研究:(十四)——Avro简介