Получить Avro запись в виде двоичного массива с помощью kafka-avro-console-consumer - PullRequest
0 голосов
/ 28 июня 2018

У меня есть 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

но это не сработало.

Есть идеи?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 10 июля 2018

просто сделайте это в вашем connect-standalone.properties внесите некоторые изменения

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

0 голосов
/ 28 июня 2018

Нет такого встроенного десериализатора (на самом деле, Formatter).

Потребитель консоли 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)
...