Соединитель приемника Kafka JDBC для существующей таблицы с разными именами столбцов?

#apache-kafka #apache-kafka-connect #confluent-platform

#апачи-кафка #apache-kafka-connect #слияние-платформа

Вопрос:

Я пытаюсь создать соединитель приемника jdbc, который считывает данные из темы и помещает данные в существующую таблицу. Проблема в том, что это не сопоставление 1: 1 с таблицей. Скорее, все имена столбцов отличаются от того, что у меня есть в сообщении

Ниже показано, как выглядит мое сообщение в теме:

 {
 "dealNo":"6666777",
"exception": 
{"code":12345E
 "desc": couldnot process the issue,  
},
}
 

Таблица базы данных отображается следующим образом: ERROR_TB

 id: auto generated sequence
srcId : "APP" (need to pass default value) 
factory : dealNo (from json)
body : here i need to pass the entire message
description : exception (from json)
 

Может кто-нибудь, пожалуйста, подсказать мне, как применить преобразования для этого? я новичок в этом и не уверен, как этого можно достичь

Ответ №1:

Надеюсь, вы поняли это некоторое время назад, но для всех в будущем, поскольку у меня был тот же вопрос… это кажется достаточно простым, если посмотреть на эту веб-страницу https://docs.confluent.io/platform/current/connect/transforms/replacefield.html#replacefield

Вам просто нужно указать эти свойства при настройке соединителя JDBC.

Переименовать поле В этом фрагменте конфигурации показано, как использовать ReplaceField со свойством renames .

"transforms": "RenameField",

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

"transforms.RenameField.renames": "foo:c1,bar:c2"

Это заменяет имена полей foo и bar на c1 и c2.

Перед: {«foo»:22,»bar»:»baz»}

После: {«c1″:22,»c2»: «baz»}