Hadoop首选串行化系统首选串行化系统——Avro简介及详细使用简介及详细使用
本篇博客,Alice为大家介绍的是Hadoop中作为首选串行化系统的Avro。
文章目录文章目录简介特点Avro数据类型和模式Avro基本类型Avro复杂类型Avro数据序列化/反序列化方法1 使用编译的方式序列化反序列化方法2 不使用编译的方式序列化反序列化
简介简介
Avro是Hadoop中的一个子项目,也是Apache中一个独立的项目,由Hadoop的创始人Doug Cutting(也是Lucene,Nutch等项目的创始人)开发,设计用于支持大批量数据交换
的应用。Avro是一个基于二进制数据传输高性能的中间件。在Hadoop的其他项目中例如HBase(Ref)和Hive(Ref)的Client端与服务端的数据传输也采用了这个工具。Avro是一个数据
序列化的系统。Avro 可以将数据结构或对象转化成便于存储或传输的格式。Avro设计之初就用来支持数据密集型应用,适合于远程或本地大规模数据的存储和交换。
特点特点
丰富的数据结构类型;
快速可压缩的二进制数据形式,对数据二进制序列化后可以节约数据存储空间和网络传输带宽;
存储持久数据的文件容器
可以实现远程过程调用RPC
简单的动态语言结合功能
另外,avro支持跨编程语言实现(C, C++, C#,Java, Python, Ruby, PHP),类似于Thrift,但是avro的显著特征是:avro依赖于模式,动态加载相关数据的模式,Avro数据的
读写操作很频繁,而这些操作使用的都是模式,这样就减少写入每个数据文件的开销,使得序列化快速而又轻巧。这种数据及其模式的自我描述方便了动态脚本语言的使用。当Avro
数据存储到文件中时,它的模式也随之存储,这样任何程序都可以对文件进行处理。如果读取数据时使用的模式与写入数据时使用的模式不同,也很容易解决,因为读取和写入的模
式都是已知的。
Avro数据类型和模式数据类型和模式
Avro定义了少量的基本数据类型,通过编写模式的方式,它们可被用于构建应用特定的数据结构。考虑到互操作性,实现必须支持所有的Avro类型。
Avro基本类型基本类型
类型类型 描述描述 模式示例模式示例
null 空值 “null”
boolean 二进制值 “boolean”
int 32位带符号整数 “int”
long 64位带符号整数 “long”
float 单精度(32位)IEEE754 浮点数 “float”
double 双精度(64位)IEEE754 浮点数 “double”
bytes 8位无符号字节序列 “bytes”
string Unicode字符序列 “string”
Avro复杂类型复杂类型