我正在使用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条答案
按热度按时间klh5stk11#
我不确定这是否是推荐的,但是,您可以利用
AvroData
课程提供kafka-connect-avro-converter
库来完成转换。图书馆位于: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
功能。bnlyeluc2#
您不应该需要kafka connect中的avro模式。
Kafka连接保持一个内部
Struct
以及Schema
你应该在其中传递的类SourceRecord
/SinkRecord
班级。例如,http源可以定义int:status
,string:body
在一个Struct
班级。基本上,让
Converter
接口可用于任何和所有序列化。