kafka avroasticsearch потребитель разрешает неизвестные ключи - PullRequest
0 голосов
/ 08 февраля 2019

Есть ли способ разрешить Kafka-Avro принимать все ключи от производителя, даже если они не определены в схеме производителей?В настоящее время я запускаю продюсера с

./bin/kafka-avro-console-producer --broker-list localhost:9092 --topic elasticsearch-sink --property value.schema='{"type":"record","name":"myRecord", "fields":[{"name":"esKey", type":"string"}]}'

и передачей
{"esKey":"keyExample", "undefinedKey": "empty"}

Потребитель покажет только
{"esKey":"keyExample"}

Ипоэтому неопределенный ключ также не будет отправлен в ElasticSearch.Я бы предпочел не определять схему из-за очень большого и непредсказуемого ввода.

Редактировать: Работа с Confluent 4.1.1

1 Ответ

0 голосов
/ 09 февраля 2019

Ваша схема не позволяет другое поле

"fields":[{"name":"esKey", type":"string"}]

Вам нужно добавить undefinedKey в это поле, чтобы появилось это поле.По сути, десериализатор Avro не имеет оснований думать, что другое поле должно существовать.

Я бы предпочел не определять схему из-за очень большого и непредсказуемого ввода.

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

...