Live2D

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:默认值

image

例子

{
  "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类型,必要字段)
posted @ 2022-05-10 11:48  没有梦想的java菜鸟  阅读(152)  评论(0编辑  收藏  举报