Как использовать сгенерированные Avro схемы с настраиваемым исходным соединителем Kafka Connect - PullRequest
0 голосов
/ 16 марта 2020

Я разрабатываю собственный исходный соединитель с помощью Kafka Connect и пытаюсь включить поддержку Avro. Для этого я создал несколько файлов .avsc для описания схем ключей и значений и добавил avro-maven-plugin в свой проект для автоматического создания соответствующих классов java, которые я могу использовать в своем коде.

Из сгенерированные классы, я могу получить схему как объект типа org.apache.avro.Schema.

Но тип возвращаемого значения метода poll исходного соединителя - это список org.apache.kafka.connect.source.SourceRecord объектов, конструктор которых принимает схемы в качестве экземпляров org.apache.kafka.connect.data.Schema, и я просто не вижу прямого способа преобразования одного в другой.

Итак, как мне получить подходящие экземпляры схемы ключ / значение, которые затем я могу подключить к SourceRecords, которые будут возвращены из метода poll в моем коннекторе?

Я даже на правильном пути с использованием плагина Avro Maven, или я должен использовать что-то еще?

Ответы [ 2 ]

0 голосов
/ 16 марта 2020

Вам не нужна схема Avro в Kafka Connect.

Kafka Connect поддерживает внутренний класс Struct и Schema, который вы должны передавать между SourceRecord / SinkRecord классами. Например, источник HTTP может определять int:status, string:body в классе Struct.

В принципе, пусть интерфейс Converter отвечает за любую сериализацию.

0 голосов
/ 16 марта 2020

Я не уверен, рекомендуется ли это, однако вы можете использовать класс AvroData, предоставленный в библиотеке kafka-connect-avro-converter, для выполнения sh преобразования.

Библиотеку можно найти здесь: https://mvnrepository.com/artifact/io.confluent/kafka-connect-avro-converter/5.4.1

Источник для класса здесь: https://github.com/confluentinc/schema-registry/blob/5.4.1-post/avro-converter/src/main/java/io/confluent/connect/avro/AvroData.java

Вам нужно создать экземпляр AvroData, а затем попробовать функцию toConnectSchema.

...