Используя mongo-kafka в качестве коннектора приемника, как мне сопоставить поле значения записи темы с другим значением? - PullRequest
0 голосов
/ 14 октября 2019

Я новичок в Kafka Connect и MongoDB. У меня есть запись в теме Кафки со значением { "Id": "foo" }, и я бы хотел, чтобы Id отображался на BAR при сохранении в виде документа в коллекции в монго. Ожидаемый результат будет { "BAR": "foo" }. Что я должен попробовать, или как мне настроить это?

Я использую это как ссылку: https://github.com/mongodb/mongo-kafka/blob/master/docs/sink.md

Я пытался добавить "field.renamer.mapping": "[{\"oldName\":\"Id\", \"newName\": \"BAR\"}]" и "field.renamer.mapping": "[{\"oldName\":\"value.Id\", \"newName\": \"BAR\"}]" кКонфигурация, аналогичная созданию раковины Монго здесь: https://github.com/mongodb/mongo-kafka/blob/11bac7636f0d6b0e3313c84445777253d36c2042/docker/run.sh#L108. Запрос проходит без ошибок, создает запись в mongodb, но не соответствует ожидаемому.

1 Ответ

1 голос
/ 14 октября 2019

Вы должны иметь возможность использовать преобразование одного сообщения (https://www.confluent.io/blog/simplest-useful-kafka-connect-data-pipeline-world-thereabouts-part-3/),, в частности преобразование ReplaceField . Вы должны добавить это в конфигурацию вашего соединителя:

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