Kafka Connect:当将数据接收到数据库 table 时,avro 模式中的任何字段都可以忽略吗?

Kafka Connect : Can any field in avro schema ignore when sink data to database table?

我有一个要求,需要一个用于多用途的 avro 架构。 avro 模式中的某些字段不需要在数据库中下沉 table。例如:

我的 avro 模式是:

{
  "namespace": "com.test.clearing",
  "type": "record",
  "name": "ClearingTest",
  "fields": [
    {
      "name": "ID",
      "type": "int"
    },
    {
      "name": "ITEM",
      "type": "string"
    },
    {
        "name": "STAT",
        "type": "string"
    }
  ]
}

我的 table DDL 是:

-- auto-generated definition
create table CLEARING_TEST
(
    ID int not null primary key,
    ITEM varchar(200) null
);

我可以忽略 kafka 连接器中的 STAT 字段以便在数据库中下沉吗?

您可以使用 Kafka Connect 的单消息转换 (SMT),更准确地说 replaceField 使用 blacklist 来删除一个字段,以便在将消息从 Kafka 插入目标数据库时忽略该字段:

"transforms": "ReplaceField",
"transforms.ReplaceField.type": "org.apache.kafka.connect.transforms.ReplaceField$Value",
"transforms.ReplaceField.blacklist": "STAT"

现发原帖:

{"ID": 1, "ITEM": "myItem", "STAT": "myStat"}

将转换为:

{"ID": 1, "ITEM": "myItem"}