我正在使用Confluent的JDBC连接器以Avro格式将数据发送到Kafka.我需要将此架构存储在架构注册表中,但我不确定它接受的格式.我在这里阅读了文档,但没有提到太多.
我试过这个(将Avro输出并粘贴到 - 一个int和一个字符串字段):
curl -X POST -H "Content-Type: application/vnd.schemaregistry.v1+json" --data '{"type":"struct","fields":[{"type":"int64","optional":true,"field":"id"},{"type":"string","optional":true,"field":"serial"}],"optional":false,"name":"test"}' http://localhost:8081/subjects/view/versions
Run Code Online (Sandbox Code Playgroud)
但我得到错误:{"error_code":422,"message":"无法识别的字段:类型"}
小智 9
您作为JSON提供的架构应以"架构"键开头.您提供的实际架构将是键架构的值.
所以你的请求应该是这样的:
curl -X POST -H "Content-Type: application/vnd.schemaregistry.v1+json" --data '{"schema" : "{\"type\":\"string\",\"fields\":[{\"type\":\"int64\",\"optional\":true,\"field\":\"id\"},{\"type\":\"string\",\"optional\":true,\"field\":\"serial\"}],\"optional\":false,\"name\":\"test\"}"}' http://localhost:8081/subjects/view/versions
Run Code Online (Sandbox Code Playgroud)
我对命令做了两个其他更改:
对于文档中描述的第一个POST请求,请查看他们如何在此处为模式建模.
首先,是否需要提前存储schema?如果您将 JDBC 连接器与 Avro 转换器(它是架构注册表包的一部分)一起使用,则 JDBC 连接器将从数据库中找出表的架构并为您注册。您需要在 KafkaConnect 配置文件中指定转换器。您可以以此为例: https: //github.com/confluenceinc/schema-registry/blob/master/config/connect-avro-standalone.properties
如果您确实想自己注册架构,则问题可能出在 shell 命令上 - 在 shell 中转义 JSON 很棘手。我在 Chrome 中安装了 Advanced Rest Client,并使用它来处理架构注册表和 KafkaConnect 的 REST API。
| 归档时间: |
|
| 查看次数: |
3584 次 |
| 最近记录: |