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

Kafka Connect消息键Base64编码问题:如何将整型ID显示为普通数字

问题描述

使用以下JDBC源连接器配置时:

#Connector:
 - name: some-connector #source-connector2-name
config:
  connector.class: io.confluent.connect.jdbc.JdbcSourceConnector #fullClassPath
  mode: timestamp
  timestamp.column.name: update_ts
  query: SELECT id, name FROM customer_account
  transforms: createKey, ExtractField
  transforms.createKey.type: org.apache.kafka.connect.transforms.ValueToKey
  transforms.createKey.fields: id
  transforms.ExtractField.type: org.apache.kafka.connect.transforms.ExtractField$Key
  transforms.ExtractField.field: id
  topic.prefix: secret.value://secret.txt
  validate.non.null: false

键字段id为整型,但消息生产至Kafka后,日志中显示消息键id被Base64编码且为字符串类型,期望它以普通数字形式显示,而非Base64编码状态。此前尝试过在线方案中的键转换器但未生效。

解决方案

问题根源在于未配置正确的键转换器(Key Converter),默认的StringConverter会将所有键序列化为字符串并以Base64编码形式存储。需添加以下配置来实现数字类型键的正确序列化:

方案1:使用JSON转换器(无Schema)

在连接器配置中添加键转换器参数:

key.converter: org.apache.kafka.connect.json.JsonConverter
key.converter.schemas.enable: false

修改后的完整配置:

#Connector:
 - name: some-connector #source-connector2-name
config:
  connector.class: io.confluent.connect.jdbc.JdbcSourceConnector #fullClassPath
  mode: timestamp
  timestamp.column.name: update_ts
  query: SELECT id, name FROM customer_account
  transforms: createKey, ExtractField
  transforms.createKey.type: org.apache.kafka.connect.transforms.ValueToKey
  transforms.createKey.fields: id
  transforms.ExtractField.type: org.apache.kafka.connect.transforms.ExtractField$Key
  transforms.ExtractField.field: id
  # 新增键转换器配置
  key.converter: org.apache.kafka.connect.json.JsonConverter
  key.converter.schemas.enable: false
  topic.prefix: secret.value://secret.txt
  validate.non.null: false

方案2:使用Avro转换器(需Schema Registry)

如果使用Confluent Schema Registry,可配置Avro转换器来保留类型信息:

key.converter: io.confluent.connect.avro.AvroConverter
key.converter.schema.registry.url: http://your-schema-registry-url:8081

注意事项

  • 修改配置后必须重启连接器才能生效。
  • 使用JSON转换器时关闭schema,能直接将整型id序列化为JSON数字,Kafka日志中会显示原始数字值;使用Avro转换器则会通过Schema Registry管理类型,确保键的类型一致性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:50:10