Кафка тема с разным форматом данных

Я записал некоторые данные avro в тему «test-avro», используя Kafka-avro-console-продюсер. Затем я написал несколько текстовых данных в той же теме «test-avro», используя Kafka-console-продюсер. После этого все данные в теме испортились. Может ли кто-нибудь объяснить, что привело к тому, что это произошло вот так?


person RaAm    schedule 16.01.2019    source источник


Ответы (1)


Вы просто не можете больше использовать avro-console-consumer (или Consumer с десериализатором Avro) для чтения этих смещений, потому что он будет предполагать, что все данные в теме принадлежат Avro, и будет использовать KafkaAvroDeserializer Confluent.

Обычный console-producer будет проталкивать строки UTF-8, отличные от кодировки Avro, и использовать StringSerializer, который не будет соответствовать ожидаемый формат проводника для десериализатора Avro

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

tl; dr Производитель и потребитель должны согласовать формат данных в теме.

person OneCricketeer    schedule 16.01.2019