Кафка тема с другим форматом данных - PullRequest
0 голосов
/ 16 января 2019

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

1 Ответ

0 голосов
/ 16 января 2019

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

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

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

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

...