Apache Avro 学习
参考官方文档:https://avro.apache.org/docs/current/spec.html#schema_record
1.Schema的定义
Schema的结构其实就是一种json格式。
基本数据类型
基本数据类型一共有8种: null
,boolean
,int
,long
,float
,double
,bytes
,string
。{"type":"string"}代表的就是类型是string的schema
复杂数据类型
Avro提供了六种复杂数据类型:record
,enums
,arrays
,maps
,unions
,fixed
Records
Records有以下属性:
name
:提供record的的名称(string类型,必要参数)namespace
:提供全限定名称(string类型)doc
:提供说明的文档内容(string类型)aliases
:别名(string的array类型)fields
:列举字段的属性和值type
:一个schema (schema类型,必要参数)name
:定义字段 (string类型 必要参数)doc
:描述内容(string类型)order
:排序方式,默认升序aliases
:别名(string类型)default
:默认值
例子
{
"type": "record",
"name": "LongList",
"aliases": ["LinkedLongs"], // old name for this
"fields" : [
{"name": "value", "type": "long"}, // each element has a long
{"name": "next", "type": ["null", "LongList"]} // optional next element
]
}
Enums
Enums有以下属性:
name
:提供enmu的名称(string类型,必要字段)namespace
:全限定名称(string类型)aliases
:别名(string的array类型)doc
:说明文档内容(string类型)symbols
:列举符号,禁止重复,必须匹配正则表达式(json数组类型)default
:默认值
例子
{
"type": "enum",
"name": "Suit",
"symbols" : ["SPADES", "HEARTS", "DIAMONDS", "CLUBS"]
}
Arrays
Arrays提供了一个的属性:
items
:提供了数组的items
例如一个string类型的数组定义如下
{
"type": "array",
"items" : "string",
"default": []
}
Maps
Maps提供了一个属性:
values
:map的values
例如一个string转成long的map定义如下
{
"type": "map",
"values" : "long",
"default": {}
}
Unions
类型就是一个json数组
Fixed
Fixed有以下属性:
name
:提供fiexd的名称(string类型,必要字段)namespace
:命名空间((string类型)aliases
:别名(string的array类型)doc
:描述内容文档(string类型)size
: 指定每个值的字节数(integer类型,必要字段)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)