Я записал некоторые данные avro в тему «test-avro», используя Kafka-avro-console-продюсер. Затем я написал несколько текстовых данных в той же теме «test-avro», используя Kafka-console-продюсер. После этого все данные в теме испортились. Может ли кто-нибудь объяснить, что привело к тому, что это произошло вот так?
Кафка тема с разным форматом данных
Ответы (1)
Вы просто не можете больше использовать avro-console-consumer
(или Consumer с десериализатором Avro) для чтения этих смещений, потому что он будет предполагать, что все данные в теме принадлежат Avro, и будет использовать KafkaAvroDeserializer
Confluent.
Обычный console-producer
будет проталкивать строки UTF-8, отличные от кодировки Avro, и использовать StringSerializer
, который не будет соответствовать ожидаемый формат проводника для десериализатора Avro
Единственный способ обойти их - это узнать, какие смещения являются плохими, и дождаться их истечения по теме или сбросить группу потребителей, чтобы начать работу после этих сообщений. Или вы всегда можете использовать ByteArrayDeserializer
и добавить кучу условной логики для синтаксического анализа ваших сообщений, чтобы гарантировать отсутствие потери данных.
tl; dr Производитель и потребитель должны согласовать формат данных в теме.