0

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

我有一个普通的分隔文件,我有一个单独的模式,目前我正在使用 Avro Generic Record 模式来序列化 Avro 记录并通过 Kafka 发送它。这样,模式仍然与记录相关联,这使得它更加庞大。我的逻辑是,如果我在从 kafka 发送记录时删除模式,我将能够获得更高的吞吐量。

4

2 回答 2

1

Confluent Schema Registry 将发送序列化的 Avro 消息,而消息中不包含整个 Avro Schema。我认为这就是您所说的“少模式”消息的意思。

Confluent Schema Registry 将存储 Avro 模式,并且在线消息中只包含一个简短的索引 id。

完整的文档包括测试 Confluent Schema Registry 的快速入门指南在这里

http://docs.confluent.io/current/schema-registry/docs/index.html

于 2017-07-13T02:53:56.847 回答
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

要从融合模式注册表中存在的所有版本中查看完整的 Acro 模式,请使用以下命令,将以 json 格式显示模式

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

Avro 模式注册是 Kafka 生产者的任务

在融合模式注册表中拥有模式后,您只需要将 avro 通用记录发布到特定的 kafka 主题,在我们的例子中是“主题”

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)

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

于 2017-07-31T13:12:07.597 回答