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

Kafka JDBC源连接器(Oracle)编码乱码问题求助

问题解决步骤

1. 配置Kafka Connect的JSON转换器

你的连接器配置缺少value.converter和key.converter设置,默认使用ByteArrayConverter将数据以二进制格式写入Kafka主题,导致KSQL解析JSON时出现乱码。需添加以下配置:

'value.converter' = 'org.apache.kafka.connect.json.JsonConverter',
'value.converter.schemas.enable' = 'false',
'key.converter' = 'org.apache.kafka.connect.storage.StringConverter'

(若需要带Schema的JSON,可将schemas.enable设为true,但你的KSQL流定义未指定Schema,建议设为false)

2. 修正Oracle JDBC连接的字符集参数

Oracle Thin驱动不支持characterEncoding参数,需通过以下方式指定字符集:

  • 方法1:修改JDBC URL
    将连接URL调整为:
'connection.url' = 'jdbc:oracle:thin:@//HOSTIP:PORT/Service?charset=UTF8&ncharset=UTF8'

charset用于单字节字符集,ncharset用于多字节字符集(如UTF-8)。

  • 方法2:设置环境变量
    在运行Kafka Connect的环境中添加:
export NLS_LANG=AMERICAN_AMERICA.UTF8

3. 验证Oracle数据库字符集

确保Oracle数据库的字符集与配置一致,可执行以下SQL查询:

SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');

若结果不是UTF-8相关字符集(如AL32UTF8),需确认业务需求是否需要转换,或联系DBA调整。

修改后的完整连接器配置

CREATE SOURCE CONNECTOR hsr_source_connector2
WITH (
  'connection.url' = 'jdbc:oracle:thin:@//HOSTIP:PORT/Service?charset=UTF8&ncharset=UTF8',
  'connector.class' = 'io.confluent.connect.jdbc.JdbcSourceConnector',
  'connection.user' = '{User}',
  'connection.password' = '{PASS}',
  'mode' = 'bulk',
  'query' = 'select * from <Tablename>',
  'topic.prefix' = 'newuser_',
  'value.converter' = 'org.apache.kafka.connect.json.JsonConverter',
  'value.converter.schemas.enable' = 'false',
  'key.converter' = 'org.apache.kafka.connect.storage.StringConverter',
  'transforms' = 'createKey,extractInt',
  'transforms.createKey.type' = 'org.apache.kafka.connect.transforms.ValueToKey',
  'transforms.createKey.fields' = 'USER_ID',
  'transforms.extractInt.type' = 'org.apache.kafka.connect.transforms.ExtractField$Key',
  'transforms.extractInt.field' = 'USER_ID'
);

官方文档参考

Confluent JDBC源连接器的配置文档中,转换器配置和Oracle连接参数章节详细说明了这些设置的作用:

  • 转换器配置:控制数据在Kafka中的序列化格式,需匹配下游KSQL的解析格式
  • Oracle连接参数:需遵循Oracle Thin驱动的参数规范,而非通用JDBC的characterEncoding

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:55:28