我可以使用汇总的Schema Registry从平面文件生成模式较少的avro消息吗?

时间:2017-07-13 02:37:58

标签: apache-kafka avro confluent confluent-schema-registry

我想知道我可以使用Confluent Schema注册表生成(然后将其发送到kafka)架构更少的avro记录吗?如果是,有人可以分享一些资源吗? 我无法在Confluent网站和Google上找到任何示例。

我有一个简单的分隔文件,我有一个单独的架构,目前我使用Avro Generic Record架构来序列化Avro记录并通过Kafka发送。这样,架构仍附有记录,这使得它更笨重。我的逻辑是,如果我从kafka发送记录时删除模式,我将能够获得更高的吞吐量。

2 个答案:

答案 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主题的记录。