转载请写明来源地址: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的输入。
突然发现,简介真够简的,详细的内容,之后的章节补充吧。