0

我有一个 Kafka Producer,它将 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

但它没有用。

有任何想法吗?

谢谢你。

4

2 回答 2

0

没有像这样的内置反序列化器(实际上是格式化程序)。

Avro 控制台使用者使用 JSON 格式化程序

常规控制台使用者将为字节输出 UTF8 字符串

您可以构建自己的 Formatter 类,然后将其添加到您的 Kafka Console Consumer 类路径中

--formatter <String: class>              The name of a class to use for
                                           formatting kafka messages for
                                           display. (default: kafka.tools.
                                           DefaultMessageFormatter)
于 2018-06-28T13:50:01.127 回答
-1

只需在您的 connect-standalone.properties 中执行此操作即可进行一些更改

key.converter=org.apache.kafka.connect.avro.AvroConverter value.converter=org.apache.kafka.connect.avro.AvroConverter

于 2018-07-10T08:17:38.660 回答