You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用avrogen编译包含引用的avsc文件生成Avro schema

错误原因分析
  • 第一个avsc文件本身格式不合法:提供的片段缺少外层{}包裹,根节点未声明type: record,字段数组也未正确闭合
  • 跨文件引用自定义类型时未指定完整命名空间:第二个文件中AnalogProperty的命名空间为Kafka.AvroSchemas,第一个文件直接写短名AnalogProperty无法被识别
  • 执行avrogen编译时未传入所有依赖的avsc文件,工具无法加载被引用的类型定义
修复步骤

1. 修复第一个avsc文件的格式和引用逻辑

{
  "doc": "Measurement Type, Analog or Discrete",
  "name": "AnalogProperties",
  "namespace": "Kafka.AvroSchemas",
  "type": "record",
  "fields": [
    {
      "doc": "",
      "name": "RealPower",
      "type": "Kafka.AvroSchemas.AnalogProperty"
    }
  ]
}

如果已经将第一个文件的namespace设为和第二个文件一致的Kafka.AvroSchemas,type字段也可以直接写AnalogProperty,无需带全路径

2. 修复第二个avsc文件的语法问题

原文件中fields数组最后一个字段后多了多余逗号,严格的Avro解析器会识别为语法错误,删除多余逗号即可。

3. 调整avrogen编译命令

编译时需要把所有依赖的avsc文件都传入参数,且需要把被依赖的类型定义文件放在前面,示例命令:
avrogen -s .\第二个文件.avsc .\第一个文件.avsc .\代码输出目录

内容的提问来源于stack exchange,提问作者Victor Silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:24:00