Avro是一个数据序列化系统,主要用于支持大批量数据交换的应用。
特点:
{
"type":"record",
"name":"aaa",
"namespace":"bbb",
"fields":[
{
"name":"ccc",
"type":"int",
"doc":"ccc",
"default":0
},
{
"name":"ddd",
"type":"string",
"doc":"ddd",
"default":""
}
]
}
类型 | 说明 |
---|---|
null | 没有值 |
boolean | 布尔值 |
int | 32位有符号整数 |
long | 64位有符号整数 |
float | 单精度(32位)的IEEE 754浮点数 |
double | 双精度(64位)的IEEE 754浮点数 |
bytes | 8位无符号字节序列 |
string | 字符串 |
{
"type":"record",
"name":"aaa",
"namespace":"bbb",
"fields":[
{
"name":"ccc",
"type":{
"type": "array",
"items": "string",
"default": []
}
}
]
}
“items”: “string” array中元素的数据类型
{
"name":"aaa",
"default":null,
"type":[
"null",
{
"type":"array",
"default":[],
"items":{
"name":"bbb",
"type":"record",
"fields":[
{
"name":"ccc",
"type":"string",
"doc":"ccc",
"default":""
},
{
"name":"ddd",
"type":"string",
"doc":"ddd",
"default":""
}
]
}
}
]
}
示例为array和record嵌套使用,适用于一个对象的元素包含其他对象的场景
{
"type":"record",
"name":"aaa",
"namespace":"bbb",
"fields":[
{
"name":"ccc",
"type":"enum",
"symbols":["0","1","2"]
}
]
}
symbols:字符串数组,所有的枚举值(必填),不允许重复数据
{
"type":"record",
"name":"aaa",
"namespace":"bbb",
"fields":[
{
"name":"ccc",
"type":"map",
"values":"long"
}
]
}
map的key必须是string,示例为一个key为string,value为long的map
组合类型,表示各种类型的组合,使用数组进行组合。比如[“null”, “string”]表示类型可以为null或者string。
Unions不能包含多个相同类型的Schema,除非是命名的record类型、命名的fixed类型和命名的enum类型。比如,如果unions中包含两个array类型,或者包含两个map类型都不允许;但是两个具有不同name的相同类型却可以。
{
"type":"record",
"name":"aaa",
"namespace":"bbb",
"fields":[
{
"name":"ccc",
"type":"fixed",
"size":16
}
]
}
size指声明的fixed类型数据为16字节