使用kafka avro console consumer获取二进制数组形式的avro记录

c7rzv4ha  于 2021-06-08  发布在  Kafka
关注(0)|答案(2)|浏览(390)

我有一个Kafka生产者发送avro记录到一个“测试”的主题。我还有一个模式注册表,其中存储了每个记录的模式。
之后,我使用命令

kafka-avro-console-consumer --topic test --zookeeper localhost:2181  --from-beginning

检索我发送的avro记录,它返回如下json输出:

{"A":"HI","B":"HELLO","C":"HEY","D":99999,"E":90,"F":"YO"}

现在的问题是,我想得到的输出不是json格式,而是一个字节数组,遵循avro二进制格式。
例如:

[2, 65, 2, 78, 2, 78, -66, -102, 12, -76, 1, -16, 90, 0]

有任何反序列化程序,我可以用来完成这一点?我试过用

--value-deserializer io.confluent.kafka.serializers.KafkaAvroDeserializer

-value-deserializer org.apache.kafka.common.serialization.ByteArrayDeserializer

但没有起作用。
有什么想法吗?
谢谢您。

qxgroojn

qxgroojn1#

没有这样的内置反序列化程序(实际上是格式化程序)。
avro控制台使用者使用json格式化程序
常规控制台使用者将输出字节的utf8字符串
您可以构建自己的格式化程序类,然后将其添加到kafka控制台使用者类路径中

--formatter <String: class>              The name of a class to use for
                                           formatting kafka messages for
                                           display. (default: kafka.tools.
                                           DefaultMessageFormatter)
zxlwwiss

zxlwwiss2#

只需在connect-standalone.properties中执行此操作,并进行一些更改
key.converter=org.apache.kafka.connect.avro.avroconverter值.converter=org.apache.kafka.connect.avro.avroconverter

相关问题