You need to enable JavaScript to run this app. Kafka JDBC Sink Connector 写入PostgreSQL时AVRO数据反序列化报错
优惠活动
大模型
产品
解决方案
定价
更多

Kafka JDBC Sink Connector 写入PostgreSQL时AVRO数据反序列化报错

报错含义拆解
  • DataException: biometrics:Confluent Avro转换器抛出的上层封装异常,代表转换器无法将Kafka主题中的消息转换为Connect框架可识别的内部数据结构,异常上下文中附带的biometrics是对应的主题名。
  • SerializationException: Error deserializing Avro message for id -1:Confluent Avro格式的标准结构要求,消息首字节固定为魔数0x00,后续4字节存储Schema Registry分配的全局schema ID。出现schema id为-1的报错,说明转换器完成首字节校验后,没有从后续字节中解析出合法的schema ID值。
  • SerializationException: Unknown magic byte!:最底层的触发根因——Confluent Avro转换器读取到的消息首字节不是规定的0x00魔数,连最基础的格式校验都无法通过,自然无法完成后续反序列化流程。
根本原因定位

现有配置和生产者发送的消息格式完全不匹配,具体问题点:

  1. 生产者向主题发送的是普通JSON对象,结构为{"schema": "avsc文本", "payload": 业务数据},这种结构是Connect的JSON转换器可识别的格式,并非Confluent Avro转换器要求的二进制编码格式。
  2. 连接器配置的value转换器是io.confluent.connect.avro.AvroConverter,它会按照固定二进制格式解析每条消息,第一个读到的字节是JSON字符串的起始符{(ASCII值0x7B),直接触发Unknown magic byte报错。
  3. 自定义的Avro Schema存在JSON语法错误:"doc": "athletes biometrics"字段末尾缺少逗号,后续无论用哪种方式加载这个Schema都会直接解析失败。
  4. 连接器的key.converter配置值末尾多了一个空格,后续即使解决了value的反序列化问题,也会因为类名加载失败抛出新的异常。
解决方案

根据技术栈选择适配的实现路径,两种路径均可正常运行:

路径1:保留AvroConverter配置,对齐Confluent Avro生态规范

  • 修正本地的biometrics.avsc文件,给doc字段补上缺失的逗号,保证JSON语法合法。
  • 不再手动拼接schema/payload的JSON结构发消息,基于kafka-python接入配套的Avro序列化逻辑:
    1. 初始化生产者时配置Schema Registry连接地址,启用Avro序列化器
    2. 加载修正后的本地Avro Schema
    3. 发送消息时直接传入业务字段构成的字典对象,序列化器会自动完成Schema注册、schema ID获取、拼接标准Avro二进制消息(魔数+schema ID+编码后的业务负载)的全流程
  • 修正连接器配置:
    • 补上AvroConverter依赖的Schema Registry连接参数:"value.converter.schema.registry.url": "你的Schema Registry服务地址"
    • 删除key.converter配置值末尾的多余空格:"key.converter": "org.apache.kafka.connect.storage.StringConverter"

路径2:不引入Avro序列化逻辑,直接适配JSON消息

  • 保持现有生产者的发送逻辑不变,调整连接器的value转换器配置,适配JSON格式消息:
    "value.converter": "org.apache.kafka.connect.json.JsonConverter",
    "value.converter.schemas.enable": "true"
    
  • 这种配置下,JSON转换器会识别你发送的schema+payload结构,自动生成对应的Connect数据结构,传递给JDBC Sink完成PostgreSQL的写入逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 08:24:06