首页 > 解决方案 > org.apache.avro.InvalidNumberEncodingException:无效的长编码

问题描述

我尝试反序列化来自主题的 avro 数据。我尝试了两种方式。通过使用 VALUE_DESERIALIZER_CLASS_CONFIG 作为“org.apache.kafka.common.serialization.ByteArrayDeserializer”

props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.ByteArrayDeserializer");

通过这种方式,我将记录作为字节数组获取。之后通过使用 avro 模式并反序列化它可以正常工作。

但是,如果我曾经反序列化为字符串,然后转换为字节,它就不起作用了。通过使用 VALUE_DESERIALIZER_CLASS_CONFIG 作为“org.apache.kafka.common.serialization.StringDeserializer”

props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");

通过这种方式,我将记录作为字符串。之后,我将字符串转换为字节数组(字节 [])并传递字节以反序列化 avro 记录,然后得到org.apache.avro.InvalidNumberEncodingException: Invalid long encoding

如果我们使用 StringDeserializer。string->byte[]->avro ==> 不工作(获取 org.apache.avro.InvalidNumberEncodingException:无效的长编码)

但是通过使用 ByteArrayDeserializer byte->avro => 工作

标签: javaapache-kafkaavro

解决方案


推荐阅读