avro反序列化

rks48beu  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(627)

我试图使用合流kafka rest代理从我的一个主题中检索avro格式的数据,但不幸的是,我得到了一个反序列化错误。我使用以下命令查询kafka rest代理

curl -X GET -H "Accept: application/vnd.kafka.avro.v2+json" 
http://localhost:8082/consumers/my-group/instances/my-consumer/records?timeout=30000

我得到了回应

{
  "error_code": 50002,
  "message": "Kafka error: Error deserializing key/value for partition input-0 at offset 0. If needed, please seek past the record to continue consumption."
}

kafka rest代理服务器上的日志为:

org.apache.kafka.common.errors.SerializationException: Error deserializing key/value for partition input-0 at offset 0. If needed, please seek past the record to continue consumption.
Caused by: org.apache.kafka.common.errors.SerializationException: Error deserializing Avro message for id -1
Caused by: org.apache.kafka.common.errors.SerializationException: Unknown magic byte!

这些数据是使用kafkaavroserializer生成的,模式出现在模式注册表中。还请注意,通过在cli上使用avro console consumer可以读取数据。
有人知道如何解决这个问题吗?

c2e8gylq

c2e8gylq1#

最有可能的是,除了主题上有效的avro消息外,还有无效的消息。这就是这个错误的含义,正是我在尝试使用rest代理本地使用非avro消息时遇到的错误:

ERROR Unexpected exception in consumer read task id=io.confluent.kafkarest.v2.KafkaConsumerReadTask@2e20d4f3  (io.confluent.kafkarest.v2.KafkaConsumerReadTask)
org.apache.kafka.common.errors.SerializationException: Error deserializing key/value for partition avrotest-0 at offset 2. If needed, please seek past the record to continue consumption.
Caused by: org.apache.kafka.common.errors.SerializationException: Error deserializing Avro message for id -1
Caused by: org.apache.kafka.common.errors.SerializationException: Unknown magic byte!

我会用一种工具,比如 kafkacat 检查错误中给定偏移量处的实际消息,例如:

kafkacat -C -b localhost:9092 -t test_topic_avro -o 0 -c 1

这个 -o 0 将在偏移量0处使用消息,并且 -c 1 意味着只消耗一条信息。
您还可以查找有问题的偏移量,例如topic avrotest 将偏移移动到 1 :

echo '{ "offsets": [ { "topic": "avrotest", "partition": 0, "offset": 1 } ] }' | \
http POST localhost:8082/consumers/rmoff_consumer_group/instances/rmoff_consumer_instance/positions \
Content-Type:application/vnd.kafka.v2+json

相关问题