Avro Schema格式

2024-08-28 02:38
文章标签 格式 schema avro

本文主要是介绍Avro Schema格式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Avro Schema格式

Avro是一个数据序列化系统,主要用于支持大批量数据交换的应用。

特点:

  • 支持二进制序列化方式,可以便捷、快速的处理大量数据;
  • 动态语言有好,Avro提供的机制使动态语言可以方便的处理Avro数据

1.Avro Schema结构

{"type":"record","name":"aaa","namespace":"bbb","fields":[{"name":"ccc","type":"int","doc":"ccc","default":0},{"name":"ddd","type":"string","doc":"ddd","default":""}]
}
  • “type”: “record” 必须栏位
  • “name”: “aaa” 必须栏位,记录名
  • “namespace”: “bbb” 包名
  • “fields”: [] 必须栏位,列举所有属性,是json数组
    • “name”:“ccc” 必须栏位,属性名
    • “type”:“int” 必须栏位,属性类型
    • “doc”:“ccc” 属性文档
    • “default”:0 属性默认值,需要对应属性类型

2.简单数据类型

类型说明
null没有值
boolean布尔值
int32位有符号整数
long64位有符号整数
float单精度(32位)的IEEE 754浮点数
double双精度(64位)的IEEE 754浮点数
bytes8位无符号字节序列
string字符串

3.复杂数据类型

1).Array

{"type":"record","name":"aaa","namespace":"bbb","fields":[{"name":"ccc","type":{"type": "array","items": "string","default": []}}]
}

“items”: “string” array中元素的数据类型

2).Record

{"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嵌套使用,适用于一个对象的元素包含其他对象的场景

3).Enum

{"type":"record","name":"aaa","namespace":"bbb","fields":[{"name":"ccc","type":"enum","symbols":["0","1","2"]}]
}

symbols:字符串数组,所有的枚举值(必填),不允许重复数据

4).Map

{"type":"record","name":"aaa","namespace":"bbb","fields":[{"name":"ccc","type":"map","values":"long"}]
}

map的key必须是string,示例为一个key为string,value为long的map

5).Union

组合类型,表示各种类型的组合,使用数组进行组合。比如[“null”, “string”]表示类型可以为null或者string。

Unions不能包含多个相同类型的Schema,除非是命名的record类型、命名的fixed类型和命名的enum类型。比如,如果unions中包含两个array类型,或者包含两个map类型都不允许;但是两个具有不同name的相同类型却可以。

6).Fixed

{"type":"record","name":"aaa","namespace":"bbb","fields":[{"name":"ccc","type":"fixed","size":16}]
}

size指声明的fixed类型数据为16字节

这篇关于Avro Schema格式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1113489

相关文章

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

Java中JSON格式反序列化为Map且保证存取顺序一致的问题

《Java中JSON格式反序列化为Map且保证存取顺序一致的问题》:本文主要介绍Java中JSON格式反序列化为Map且保证存取顺序一致的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录背景问题解决方法总结背景做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为co

Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题

《Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题》:本文主要介绍Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录一、前言二、系统架构检测三、卸载旧版 Go四、下载并安装正确版本五、配置环境变量六、验证安装七、常见

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

python dict转换成json格式的实现

《pythondict转换成json格式的实现》本文主要介绍了pythondict转换成json格式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下... 一开始你变成字典格式data = [ { 'a' : 1, 'b' : 2, 'c编程' : 3,

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使