Используя 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"
Другие вопросы по тегам