此问题在此处已有答案:
Avro serializer and deserializer with kafka java api(1个答案)
昨天关门了。
我正在写一个Java程序,从Apache Kafka数据流中读取。消息是Avro序列化的。每条消息包含一条Avro序列化的记录。包io.confluent.kafka.serializers.KafkAvroDeserializer在我的开发平台上不可用;如果是的话,那么只需将属性“value.deserializer”设置为正确的设置即可(KafkaAvroDeserializer.class)进行Avro反序列化。因此,我需要编写自己的反序列化器。我在网上找到的所有内容都是关于如何序列化记录,使用指定的Avro模式将其写入文件,然后如何读取和反序列化写入的记录。Java Parsers库,据我所知,并没有提供太多的帮助,因为它假设程序以未序列化的形式接收数据,然后给出必要的对象方法来序列化它,然后给出必要的方法来反序列化它。
所以,我的问题是:如何在Java中反序列化Avro格式记录?只需一条记录。我有序列化的记录。我有Avro模式。我不需要将其附加到可序列化的文件。我只需要反序列化该记录。我不敢相信以前没有人这样做过,但我确实在网上没有找到任何关于它的信息。有人能帮助我吗?
先谢谢你。
我试过使用Java解析器库,各种Kafka Avro“value.deserializer”属性设置,在我的Eclipse pom.xml文件中使用differnet包。都无济于事。
必须有一个简单的方法来反序列化一个单一的Avro记录,通过提供必要的模式(我已经得到)。
1条答案
按热度按时间vfh0ocws1#
以前已经做过了。Avro文档(和/或JavaDoc)正好涵盖了你所需要的,那就是
BinaryDecoder
类。同样的文档假设记录是序列化的。然而,Confluent的Avro序列化记录与直接序列化记录不同,因此,不清楚您到底需要什么。
我的开发平台上没有io.confluent.Kafka.serializers.KafkAvroDeserializer包
然后使用Maven / Gradle添加它?但这需要您有一个正在运行的Schema Registry,而不仅仅是Avro模式文件。
否则,该代码是开源的,所以您可以自己复制类。