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

Kafka Connect Oracle CDC能否按主题自定义Schema命名?

问题描述

用Kafka Connect的Oracle CDC源连接器给数据库表做CDC同步时,每个表自动生成的Avro Schema里,名称和命名空间全是默认值:

{
  "name": "ConnectDefault",
  "namespace": "io.confluent.connect.avro",
  "type": "record"
}

想自定义这些Schema的名称和命名空间,但试了下面这些配置都没效果:

"value.converter.schema.name.strategy": "io.confluent.kafka.serializers.subject.TopicNameStrategy",
"value.converter.schema.registry.subject": "my.namespace.myname",
"transforms":"AddNamespace",
"transforms.AddNamespace.type":"org.apache.kafka.connect.transforms.SetSchemaMetadata$Value", 
"transforms.AddNamespace.timestamp.record.namespace":"example",
...
解决方案

Oracle CDC源连接器底层基于Debezium实现,得用Debezium专属的Schema命名配置,你之前试的通用参数不对路:

  • 自定义命名空间
    用schema.name.adapter系列配置,开启数据库schema和表名的复用:

    "schema.name.adapter": "io.debezium.relational.history.SchemaNameAdapter",
    "schema.name.adapter.database.schema": "true",
    "schema.name.adapter.table.name": "true"
    

    这样生成的命名空间会带上数据库schema和表名,比如your_db_schema.your_table,不会再用默认的io.confluent.connect.avro。

  • 自定义Schema名称
    要替换默认的ConnectDefault,可以用Debezium的主题Schema命名策略配置:

    "topic.schema.name.strategy": "io.debezium.schema.TopicSchemaNameStrategy",
    "topic.schema.name.strategy.schema": "true",
    "topic.schema.name.strategy.table": "true"
    

    配置后Schema名称会包含表名等标识,不会全是ConnectDefault。

  • 额外说明
    你之前用的value.converter.schema.name.strategy是管Schema Registry里主题名称的,不是Schema本身的name和namespace;还有SetSchemaMetadata Transform参数写错了,应该是record.namespace,但就算改对,Oracle CDC源连接器也可能会覆盖这个设置,所以优先用连接器专属的配置才靠谱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 13:03:30