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"}
我有一个要求,需要一个用于多用途的 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"}