我想知道我可以使用Confluent Schema注册表生成(然后将其发送到kafka)架构更少的avro记录吗?如果是,有人可以分享一些资源吗? 我无法在Confluent网站和Google上找到任何示例。
我有一个简单的分隔文件,我有一个单独的架构,目前我使用Avro Generic Record架构来序列化Avro记录并通过Kafka发送。这样,架构仍附有记录,这使得它更笨重。我的逻辑是,如果我从kafka发送记录时删除模式,我将能够获得更高的吞吐量。
答案 0 :(得分:1)
Confluent Schema Registry将在消息中发送序列化的Avro消息,而不使用整个Avro Schema。我认为这就是你所说的" schema less"消息。
Confluent架构注册表将存储Avro架构,并且线路上的消息中仅包含一个简短的索引ID。
完整的文档包括测试Confluent Schema Registry的快速入门指南
http://docs.confluent.io/current/schema-registry/docs/index.html
答案 1 :(得分:0)
您可以使用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
要查看汇合架构注册表中使用以下命令的所有版本的版本1的完整Acro架构,将以json格式显示架构
curl -X GET -i http://localhost:8081/subjects/topica/versions/1
Avro架构注册是Kafka制作人的任务
在融合模式注册表中使用模式后,您只需要将avro通用记录发布到特定的kafka主题,在我们的例子中它是' topic'
Kafka Consumer:使用以下代码获取特定Kafka主题的最新架构
val schemaReg = new CachedSchemaRegistryClient(kafkaAvroSchemaRegistryUrl, 100)
val schemaMeta = schemaReg.getLatestSchemaMetadata(kafkaTopic + "-value")
val schema = schemaMeta.getSchema
val schema =new Schema.Parser().parse(schema)
上面将用于获取模式,然后我们可以使用汇编来解码来自kafka主题的记录。