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