Docs 菜单
Docs 主页
/
MongoDB Kafka Connector
/ /

应用模式

在此页面上

  • Overview
  • Default Schemas
  • 密钥模式
  • 值模式
  • 已转换文档的模式
  • 指定模式
  • 推断模式

在本指南中,您可以了解如何在 MongoDB Kafka 源连接器中对传入文档应用模式。

Kafka Connect 中有两种类型的模式,即密钥模式值模式。Kafka Connect 向 Apache Kafka 发送包含值和密钥的消息。密钥模式执行发送到 Apache Kafka 的消息中的密钥的结构。值模式执行发送到 Apache Kafka 的消息中的值的结构。

重要

术语说明

本指南使用 Apache Kafka 对“键”的定义,该定义与 BSON 定义略有不同。在 BSON中,“键”是文档中字段的唯一字符串标识符。

在 Apache Kafka 中,“密钥”是在消息中发送的字节数组,用于确定将消息写入主题的哪个分区。Kafka 密钥可以是其他密钥的副本,也可以是 null

在连接器中指定模式是可选项,您可以指定以下任意模式组合:

  • 仅值模式

  • 仅密钥模式

  • 值模式和密钥模式

  • No schemas

提示

模式的好处

要查看有关在 Kafka Connect 中使用模式的好处的讨论,请参阅 Confluence 的这篇文章。

如果您想通过Apache Kafka以特定数据格式(例如Apache Avro 或JSON schema)发送数据,请参阅转换器指南。

要了解有关 Apache Kafka 中键和值的更多信息,请参阅 Apache Kafka 官方简介。

连接器提供两种默认模式:

要了解有关变更事件的更多信息,请参阅变更流指南

要了解有关默认模式的更多信息,请参阅 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 架构的更多信息,请参阅数据格式指南。

重要

转换器

如果您想使用 Avro 二进制编码通过 Apache Kafka 发送数据,则必须使用 Avro 转换器。有关更多信息,请参阅转换器指南。

您可以让源connector推断传入文档的模式。 此选项非常适合开发和不经常更改结构的数据源,但对于大多数生产部署,我们建议您指定模式。

您可以通过指定以下选项让连接器推断模式:

output.format.value=schema
output.schema.infer.value=true

Source 连接器可以推断包含数组中存储的嵌套文档的传入文档的模式。从连接器版本 1.9 开始,如果以下情况描述的嵌套文档之间存在差异,模式推断将为字段收集适当的数据类型,而不是默认为 string 类型分配:

  • 某个字段存在于一个文档中,但在另一个文档中缺失。

  • 某个字段存在于一个文档中,但在另一个文档中为 null

  • 字段是一个数组,在一个文档中包含任何类型的元素,但在另一个文档中包含其他元素或其他数据类型的元素。

  • 字段是一个数组,在一个文档中包含任意类型的元素,但在另一个文档中包含空数组。

如果嵌套文档之间的字段类型发生冲突,连接器会将冲突下推到字段的模式中,并默认分配为 string 类型。

注意

无法推断密钥模式

connector不支持密钥模式推断。 如果要使用密钥模式并转换 MongoDB 变更事件文档,则必须按照本指南的指定模式部分所述指定密钥模式。

后退

Change Streams