[英]Kafka Connect schema format for JSONConverter
我正在使用 Kafka Connect 从模式注册表中检索现有模式,然后尝试使用 JSONConverter (org.apache.kafka.connect.json.JSONConverter) 转换返回的模式字符串。
不幸的是,我从 JSONConverter 收到一个错误:
org.apache.kafka.connect.errors.DataException: Unknown schema type: object
我查看了 JSONConverter 代码,发生错误是因为从架构注册表返回的架构“类型”是“对象”(见下文),但 JSONConverter 无法识别该类型。
问题:
以下是相关的工件:
模式注册表响应(查询特定模式时):
[{"subject":"test-schema","version":1,"id":1,"schemaType":"JSON","schema":"{\"title\":\"test-schema\",\"type\":\"object\",\"required\":[\"id\"],\"additionalProperties\":false,\"properties\":{\"id\":{\"type\":\"integer\"}}}"}]
当上面的文本被清理一点时,相关的架构组件(“架构”)如下所示:
{
"title":"test-schema",
"type":"object",
"required":["id"],
"additionalProperties":false,
"properties":{"id":{"type":"integer"}}
}
org.apache.kafka.connect.json.JSONConverter
实际上并不使用“JSONSchema”规范。 它有自己的(没有很好的文档记录)格式。 它也根本不与模式注册表集成。
对象是struct
类型。 - https://www.confluent.io/blog/kafka-connect-deep-dive-converters-serialization-explained/#json-schemas
如果您打算使用实际的 JSONSchema(和注册表),则需要使用 Confluent 中的转换器 - io.confluent.connect.json.JsonSchemaConverter
是否有不同的方法将架构注册表响应整合为“架构”
如果您使用 Schema Registry Java Client,那么是的,使用getSchemaById
方法,然后该响应的schemaType()
和rawSchema()
方法应该让您接近您想要的。 有了它,你可以将它传递给一些 JSONSchema 库(例如org.everit.json.schema
,它被注册表使用)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.