应用模式
Overview
在本指南中,您可以了解如何在 MongoDB Kafka 源连接器中对传入文档应用模式。
Kafka Connect 中有两种类型的模式,即密钥模式和值模式。Kafka Connect 向 Apache Kafka 发送包含值和密钥的消息。密钥模式执行发送到 Apache Kafka 的消息中的密钥的结构。值模式执行发送到 Apache Kafka 的消息中的值的结构。
重要
术语说明
本指南使用 Apache Kafka 对“键”的定义,该定义与 BSON 定义略有不同。在 BSON中,“键”是文档中字段的唯一字符串标识符。
在 Apache Kafka 中,“密钥”是在消息中发送的字节数组,用于确定将消息写入主题的哪个分区。Kafka 密钥可以是其他密钥的副本,也可以是 null
。
在连接器中指定模式是可选项,您可以指定以下任意模式组合:
仅值模式
仅密钥模式
值模式和密钥模式
No schemas
如果您想通过Apache Kafka以特定数据格式(例如Apache Avro 或JSON schema)发送数据,请参阅转换器指南。
要了解有关 Apache Kafka 中键和值的更多信息,请参阅 Apache Kafka 官方简介。
Default Schemas
连接器提供两种默认模式:
要了解有关变更事件的更多信息,请参阅变更流指南。
要了解有关默认模式的更多信息,请参阅 MongoDB Kafka Connector 源代码中的默认模式。
密钥模式
connector为变更事件文档的 _id
字段提供默认键模式。 除非使用本指南中描述的任一转换从变更事件文档中删除_id
字段,否则应使用默认密钥模式。
如果您指定其中任一转换并希望对传入文档使用密钥模式,则必须按照本指南的指定模式部分所述指定密钥模式。
您可以使用以下选项启用默认密钥模式:
output.format.key=schema
值模式
connector为变更事件文档提供默认值模式。 除非按照本指南所述转换变更事件文档,否则应使用默认值模式。
如果您指定其中任一转换并希望对传入文档使用值模式,则必须使用本指南的转换文档模式部分描述的机制之一。
您可以使用以下选项启用默认值模式:
output.format.value=schema
已转换文档的模式
您可以通过两种方式在 Source 连接器中转换变更事件文档:
publish.full.document.only=true
选项用于修改变更事件文档结构的聚合管道
如果转换 MongoDB 变更事件文档,则必须执行以下操作才能应用模式:
要了解有关上述配置选项的更多信息,请参阅变更流属性页面。
指定模式
您可以使用 Avro 架构语法指定传入文档的模式。单击以下标签页查看如何为文档值和键指定模式:
output.format.key=schema output.schema.key=<your avro schema>
output.format.value=schema output.schema.value=<your avro schema>
要查看演示指定模式的示例,请参阅指定模式用法示例。
要了解关于 Avro 架构的更多信息,请参阅数据格式指南。
推断模式
您可以让源connector推断传入文档的模式。 此选项非常适合开发和不经常更改结构的数据源,但对于大多数生产部署,我们建议您指定模式。
您可以通过指定以下选项让连接器推断模式:
output.format.value=schema output.schema.infer.value=true
Source 连接器可以推断包含数组中存储的嵌套文档的传入文档的模式。从连接器版本 1.9 开始,如果以下情况描述的嵌套文档之间存在差异,模式推断将为字段收集适当的数据类型,而不是默认为 string
类型分配:
某个字段存在于一个文档中,但在另一个文档中缺失。
某个字段存在于一个文档中,但在另一个文档中为
null
。字段是一个数组,在一个文档中包含任何类型的元素,但在另一个文档中包含其他元素或其他数据类型的元素。
字段是一个数组,在一个文档中包含任意类型的元素,但在另一个文档中包含空数组。
如果嵌套文档之间的字段类型发生冲突,连接器会将冲突下推到字段的模式中,并默认分配为 string
类型。