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

Avro Schema适配问题:Kafka消息生成报Expected start-union错误排查

问题分析与修正方案

错误原因

你遇到的AvroTypeException: Expected start-union. Got VALUE_STRING错误,加上测试数据的其他问题,主要来自三个方面:

  • 联合类型(Union)格式不符合规范:schema中customerNumber和loyalitynumber是["null", "string"]联合类型,Avro要求非null值必须用{"string": "值"}的键值对格式包裹,而非直接写字符串。
  • 字段名不匹配:schema定义的数组字段是loyalitycodes,但测试数据里写成了entitlementCodes,字段名完全不一致。
  • 数组结构错误:schema中loyalitycodes是字符串数组,测试数据却写成了包含对象的数组,不符合元素类型定义。

修正后的正确测试数据

以下是完全符合schema要求的JSON测试数据:

{
  "customerId": "ahdzeha46",
  "customerNumber": {"string": "473363621"},
  "loyalitynumber": {"string": "45354456456"},
  "correlationId": "corr-473363621",
  "timestamp": "2021-08-09T12:20:15",
  "sku": "NO",
  "loyalitycodes": ["A238472ASD", "B12345XYZ"]
}

如果需要给联合类型字段赋null值,直接写null即可,示例:

{
  "customerId": "ahdzeha46",
  "customerNumber": null,
  "loyalitynumber": {"string": "45354456456"},
  "correlationId": "corr-473363621",
  "timestamp": "2021-08-09T12:20:15",
  "sku": "YES",
  "loyalitycodes": []
}

额外说明

  • 部分Avro序列化工具支持["null", X]类型的简化写法(直接写X类型的值),但为了兼容性,建议统一使用{"X": 值}的格式。
  • 枚举类型sku的值只能是schema中定义的NO或YES,不能使用其他字符串。
  • 数组loyalitycodes的元素必须是纯字符串,不能嵌套对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:25:22