Используя mongo-kafka в качестве соединителя приемника, как сопоставить поле значения записи темы с другим значением?
Я новичок как в Kafka Connect, так и в MongoDB. У меня есть запись в теме Kafka со значением{ "Id": "foo" }
и я хотел бы Id
сопоставить с BAR
при хранении в виде документа в коллекции в mongo. Ожидаемый результат будет{ "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. Запрос проходит без ошибок, создает запись в mongodb, но отображение не соответствует ожидаемому.
1 ответ
Вы должны иметь возможность использовать преобразование одиночного сообщения ( 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"