我可以使用合流模式注册表从平面文件生成无模式的avro msg吗?

smdnsysy  于 2021-06-08  发布在  Kafka
关注(0)|答案(2)|浏览(390)

我想知道我是否可以使用confluent schema registry来生成(然后发送给kafka)无模式的avro记录?如果是,有人能分享一些资源吗?我在合流网站和谷歌上找不到任何例子。
我有一个纯分隔的文件,我有一个单独的模式,目前我正在使用avro通用记录模式序列化avro记录并通过kafka发送它。这样,模式仍然附加在记录上,这使得它更庞大。我的逻辑是,如果在从kafka发送记录时删除模式,我将能够获得更高的吞吐量。

c3frrgcw

c3frrgcw1#

在cmd的下面命令的帮助下,您可以第一次注册avro模式

curl -X POST -i -H "Content-Type: application/vnd.schemaregistry.v1+json" \
        --data '{"schema": "{\"type\": \"string\"}"}' \
        http://localhost:8081/subjects/topic

您可以使用查看主题的所有版本

curl -X GET -i http://localhost:8081/subjects/topic/versions

要从confluent schema registry中存在的所有版本中查看版本1的完整acro架构,请使用下面的命令,以json格式显示架构

curl -X GET -i http://localhost:8081/subjects/topica/versions/1

avro模式注册是kafka生产者的任务
在confluent schema registry中拥有schema之后,您只需要将avro泛型记录发布到特定的kafka主题,在我们的示例中它是“topic”
Kafka消费者:使用下面的代码获取特定Kafka主题的最新模式

val schemaReg = new CachedSchemaRegistryClient(kafkaAvroSchemaRegistryUrl, 100)
val schemaMeta = schemaReg.getLatestSchemaMetadata(kafkaTopic + "-value")
val schema = schemaMeta.getSchema
val schema =new Schema.Parser().parse(schema)

以上将用于获取模式,然后我们可以使用confluent来解码来自Kafka主题的记录。

bvhaajcl

bvhaajcl2#

合流模式注册表将发送序列化的avro消息,消息中不包含整个avro模式。我认为这就是你所说的“无模式”消息的意思。
合流模式注册表将存储avro模式,并且只有一个短索引id包含在有线消息中。
这里有完整的文档,包括测试融合模式注册表的快速启动指南
http://docs.confluent.io/current/schema-registry/docs/index.html

相关问题