无需登录 数据私有 本地保存

Avro Schema 在线编辑器 - 数据序列化格式设计

12
0
0
0
就绪 - 请编辑或加载示例
1
编辑左侧 Schema 以查看结构树
解析 Schema 后显示字段列表
点击「生成数据」按钮查看示例
点击验证按钮或编辑 Schema 自动验证

常见问题与知识点

什么是 Apache Avro Schema?

Apache Avro 是一种数据序列化系统,使用 JSON 格式定义 Schema(数据结构)。它广泛应用于大数据生态(如 Kafka、Hadoop、Spark)中,支持跨语言的数据交换。Avro Schema 定义了数据的类型、字段名、默认值等信息,确保数据在生产者和消费者之间保持一致。

Avro 支持哪些数据类型?

基本类型:null, boolean, int, long, float, double, bytes, string
复杂类型:record(结构体)、enum(枚举)、array(数组)、map(映射)、union(联合类型)、fixed(定长字节)

Union 联合类型如何使用?

Union 类型用 JSON 数组表示,如 ["null", "string"] 表示字段可为 null 或字符串。在 Kafka 中常用来实现可选字段。注意 Union 中不能包含两个相同类型,且通常将 "null" 放在首位作为默认值类型。

Schema 演化(Evolution)规则是什么?

Avro 支持向前和向后兼容的 Schema 演化。添加字段时必须提供默认值;删除字段时旧数据中的该字段会被忽略;修改字段类型需谨慎,通常只能升级(如 int → long)。字段顺序不影响兼容性,但名称匹配很重要。

Record 的 fields 中 name 命名规范?

字段名必须以字母或下划线开头,后续可包含字母、数字、下划线。Avro 官方推荐使用小写蛇形命名(snake_case),如 user_idcreated_at。避免使用 Avro 保留字,不要使用特殊字符。

如何为字段设置默认值?

在 Record 的 field 定义中添加 "default": value 即可。默认值必须与字段类型匹配。对于 union 类型(如 ["null","string"]),默认值通常设为 null。添加新字段时必须提供默认值以保证向后兼容。