我已经使用kafka avro控制台producer在主题“testavro”中编写了一些avro数据。然后,我使用kafka控制台producer为同一主题“testavro”编写了一些纯文本数据。在此之后,主题中的所有数据都已损坏。有人能解释一下是什么导致了这样的事情吗?
t5zmwmid1#
你根本不能使用 avro-console-consumer (或使用avro反序列化程序的使用者)不再读取这些偏移量,因为它将假定主题中的所有数据都是avro,并使用合流的 KafkaAvroDeserializer .平原 console-producer 将推送非avro编码的utf-8字符串并使用 StringSerializer ,它将与avro反序列化程序所需的wire格式不匹配唯一的方法就是知道哪些偏移量是不好的,然后等待它们在主题上过期,或者重置一个消费组以在这些消息之后开始。或者,你可以随时使用 ByteArrayDeserializer ,并添加一组用于解析消息的条件逻辑,以确保没有数据丢失。热释光;dr生产者和消费者必须就主题的数据格式达成一致。
avro-console-consumer
KafkaAvroDeserializer
console-producer
StringSerializer
ByteArrayDeserializer
1条答案
按热度按时间t5zmwmid1#
你根本不能使用
avro-console-consumer
(或使用avro反序列化程序的使用者)不再读取这些偏移量,因为它将假定主题中的所有数据都是avro,并使用合流的KafkaAvroDeserializer
.平原
console-producer
将推送非avro编码的utf-8字符串并使用StringSerializer
,它将与avro反序列化程序所需的wire格式不匹配唯一的方法就是知道哪些偏移量是不好的,然后等待它们在主题上过期,或者重置一个消费组以在这些消息之后开始。或者,你可以随时使用
ByteArrayDeserializer
,并添加一组用于解析消息的条件逻辑,以确保没有数据丢失。热释光;dr生产者和消费者必须就主题的数据格式达成一致。