繁体   English   中英

JSONConverter 的 Kafka Connect 模式格式

[英]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 无法识别该类型。

问题:

  1. 检索到的架构是否可用于 JSONConverter? 如果是,我是否错误地使用了它?
  2. JSONConverter 是否需要不同的格式? 如果是,有人知道 JSONConverter 期望什么格式吗?
  3. 是否有不同的方法将架构注册表响应整合为“架构”?

以下是相关的工件:

模式注册表响应(查询特定模式时):

[{"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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM