如何将 Avro 生成的模式与 Kafka Connect 自定义源连接器一起使用
How to use Avro generated schemas with Kafka Connect custom source connector
我正在使用 Kafka Connect 开发自定义源连接器,并且我正在尝试合并 Avro 支持。为此,我创建了一些 .avsc
文件来描述我的键和值模式,并将 avro-maven-plugin
添加到我的项目中以自动创建相应的 java 类 我可以在我的项目中使用代码。
从生成的 类 中,我可以将架构作为 org.apache.avro.Schema
类型的对象。
但是源连接器的poll
方法的return类型是org.apache.kafka.connect.source.SourceRecord
个对象的列表,其构造函数将模式作为org.apache.kafka.connect.data.Schema
的实例,并且我只是没有看到将一个转换为另一个的直接方法。
那么我如何获得合适的 key/value 模式实例,然后我可以将其插入 SourceRecords 以从我的连接器中的 poll 方法 returned?
我使用 Avro Maven 插件是否正确,还是应该使用其他插件?
我不确定是否推荐这样做,但是,您可以利用 kafka-connect-avro-converter
库中提供的 AvroData
class 来完成转换。
可以在此处找到该库:
https://mvnrepository.com/artifact/io.confluent/kafka-connect-avro-converter/5.4.1
您必须实例化 AvroData,然后尝试 toConnectSchema
函数。
您不需要 Kafka Connect 中的 Avro Schema。
Kafka Connect 维护一个内部 Struct
和 Schema
class,你应该在 SourceRecord
/ SinkRecord
class 之间传递.例如,HTTP 源可以在 Struct
class 中定义 int:status
、string:body
。
基本上,让 Converter
接口负责所有序列化。
我正在使用 Kafka Connect 开发自定义源连接器,并且我正在尝试合并 Avro 支持。为此,我创建了一些 .avsc
文件来描述我的键和值模式,并将 avro-maven-plugin
添加到我的项目中以自动创建相应的 java 类 我可以在我的项目中使用代码。
从生成的 类 中,我可以将架构作为 org.apache.avro.Schema
类型的对象。
但是源连接器的poll
方法的return类型是org.apache.kafka.connect.source.SourceRecord
个对象的列表,其构造函数将模式作为org.apache.kafka.connect.data.Schema
的实例,并且我只是没有看到将一个转换为另一个的直接方法。
那么我如何获得合适的 key/value 模式实例,然后我可以将其插入 SourceRecords 以从我的连接器中的 poll 方法 returned?
我使用 Avro Maven 插件是否正确,还是应该使用其他插件?
我不确定是否推荐这样做,但是,您可以利用 kafka-connect-avro-converter
库中提供的 AvroData
class 来完成转换。
可以在此处找到该库: https://mvnrepository.com/artifact/io.confluent/kafka-connect-avro-converter/5.4.1
您必须实例化 AvroData,然后尝试 toConnectSchema
函数。
您不需要 Kafka Connect 中的 Avro Schema。
Kafka Connect 维护一个内部 Struct
和 Schema
class,你应该在 SourceRecord
/ SinkRecord
class 之间传递.例如,HTTP 源可以在 Struct
class 中定义 int:status
、string:body
。
基本上,让 Converter
接口负责所有序列化。