首页/数据/数据工程与 ETL 速查/Avro 行式序列化格式
管道基础52 条

Avro 行式序列化格式

Avro 是面向行记录的二进制格式,schema 随数据写入(writer schema),读时按 reader schema 解析,因此在 Kafka 序列化与 schema 演进场景里被广泛采用。

特点行式、二进制、schema 内嵌、支持演进
读取前提拿到 writer schema 才能正确反序列化
常见场景Kafka 消息序列化 + Schema Registry 管理

Avro schema 示例

Avro schema 示例
{
  "type": "record",
  "name": "Order",
  "namespace": "com.example.orders",
  "fields": [
    {"name": "order_id", "type": "string"},
    {"name": "amount", "type": "double"},
    {"name": "ts", "type": "long", "logicalType": "timestamp-millis"}
  ]
}
字段按名称匹配而非顺序,新增带默认值的字段通常可向后兼容;类型变更(如 string 改 int)属于不兼容变更。

易错点

  • 丢掉 writer schema 的 Avro 二进制无法反解,归档时要连 schema 一起保存
  • 把小数用 double 存储会有精度问题,金额类字段建议用 decimal 逻辑类型

数据来源与参考

  • Apache Avro 官方文档:Schema Resolution 与 Specification
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌