Avro简介
Avro是一个数据序列化工具,用语言无关的模式定义,Avro支持二进制编码和JSON编码两种序列化方式。序列化方法为深度优先,从左到右遍历。
Avro数据类型
类型 | 描述 | 示例 |
---|---|---|
null | 空值 | null |
boolean | 二进制值 | “boolean” |
int | 32位整数 | “int” |
long | 64位证书 | “long” |
float | 32位浮点数 | “float” |
double | 64位浮点数 | “double” |
bytes | 字节序列 | “bytes” |
string | 字符序列 | “string” |
array | 排序数组,对象类型一致 | {“type”:“array”,“items”:“long”} |
map | 键值对,键是字符串 | {“type”:“map”,“values”:“string”} |
record | 任意类型字段集合 | {“type”:“record”,“name”:“WeatherRecord”,“doc”:“Weather file”,“fileds”:[{“name”,“year”,“type”:“int”}]}} |
enum | 枚举类型 | {“type”:“enum”,“name”:“cutlery”,“doc”,:file",“symbols”:[“KNIFE”,“FORK”]} |
数据类型Java映射
Avro类型 | JAVA通用映射 | 特殊映射 |
---|---|---|
int | int | - |
long | long | - |
float | float | - |
double | double | - |
bytes | java.nio.bytebuffer | 字节数组 |
string | 字符序列 | “string” |
array | 排序数组,对象类型一致 | {“type”:“array”,“items”:“long”} |
map | 键值对,键是字符串 | {“type”:“map”,“values”:“string”} |
record | 任意类型字段集合 | {“type”:“record”,“name”:“WeatherRecord”,“doc”:“Weather file”,“fileds”:[{“name”,“year”,“type”:“int”},{“name”,“temperature”,“type”:“int”}]}} |
enum | 枚举类型 | {“type”:“enum”,“name”:“cutlery”,“doc”,:file",“symbols”:[“KNIFE”,“FORK”]} |
Avro使用
Avro依赖模式(scehma)实现,模式用JSON格式定义。其中类型分为:
示例
{
"namespace": "com.test.avro",
"type":"record",
"name":"Student",
"fields":[
{
"name"