Kafka Connect: Может ли какое-либо поле в схеме avro игнорироваться при приеме данных в таблицу базы данных? - PullRequest
1 голос
/ 17 февраля 2020

У меня есть требование, которому нужна схема avro для многоцелевого использования. Некоторые поля в схеме avro не нужно погружать в таблицу базы данных. Например:

Моя схема avro:

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

и DDL моей таблицы:

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

Могу ли я игнорировать поле STAT в коннекторе kafka для затопления в базе данных?

1 Ответ

1 голос
/ 17 февраля 2020

Вы можете использовать преобразование одиночного сообщения (SMT) Kafka Connect и, более точно, 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"}
...