Overview
En esta guía, puede aprender cómo aplicar esquemas a documentos entrantes en un conector de origen MongoDB Kafka.
Existen dos tipos de esquema en Kafka Connect: el esquemade clave y el esquema de valor. Kafka Connect envía mensajes a Apache Kafka que contienen tanto el valor como una clave. Un esquema de clave impone una estructura para las claves en los mensajes enviados a Apache Kafka. Un esquema de valor impone una estructura para los valores en los mensajes enviados a Apache Kafka.
Importante
Nota sobre la terminología
Esta guía utiliza la definición de Apache Kafka de la palabra "clave", que difiere ligeramente de la definición de BSON. En BSON, una "clave" es un identificador de cadena único para un campo en un documento.
En Apache Kafka, una "clave" es una matriz de bytes que se envía en un mensaje y que se utiliza para determinar en qué partición de un tema se escribirá el mensaje. Las claves de Kafka pueden ser duplicados de otras claves o null.
La especificación de esquemas en el conector es opcional y puede especificar cualquiera de las siguientes combinaciones de esquemas:
Sólo un esquema de valores
Sólo un esquema clave
Un esquema tanto de valores como de claves
No schemas
Tip
Beneficios del esquema
Para ver una discusión sobre los beneficios de usar esquemas con Kafka Connect, consulte este artículo de Confluent.
Si desea enviar datos a través de Apache Kafka con un formato de datos específico, como Apache Avro o JSON Schema, consulte la Guíade convertidores.
Para obtener más información sobre claves y valores en Apache Kafka, consulte la introducción oficial de Apache Kafka.
Default Schemas
El conector proporciona dos esquemas por defecto:
Un esquema clave para el campo _id de los documentos de eventos de cambio de MongoDB.
Un esquema de valores para los documentos de eventos de cambio de MongoDB.
Para obtener más información sobre los eventos de cambio, consulte nuestra guía sobre flujos de cambio.
Para obtener más información sobre los esquemas predeterminados, consulte los esquemas predeterminados aquí en el código fuente de MongoDB Kafka Connector.
Esquema de claves
El conector proporciona un esquema de clave predeterminado para el _id campo de los documentos de eventos de cambio. Debe usar el esquema de clave predeterminado a menos que elimine el _id campo de su documento de eventos de cambio mediante alguna de las transformaciones descritas en esta guía.
Si especifica cualquiera de estas transformaciones y desea utilizar un esquema clave para sus documentos entrantes, debe especificar un esquema clave como se describe en la sección Especificar un esquema de esta guía.
Puede habilitar el esquema de clave predeterminado con la siguiente opción:
output.format.key=schema
Esquema de valores
El conector proporciona un esquema de valores predeterminado para los documentos de eventos de cambio. Debe usar este esquema a menos que transforme sus documentos de eventos de cambio como se describe en esta guía.
Si especifica cualquiera de estas transformaciones y desea utilizar un esquema de valores para sus documentos entrantes, debe utilizar uno de los mecanismos descritos en la sección Esquemas para documentos transformados de esta guía.
Puede habilitar el esquema de valor predeterminado con la siguiente opción:
output.format.value=schema
Esquemas para documentos transformados
Hay dos formas de transformar sus documentos de eventos de cambio en un conector de origen:
La opción
publish.full.document.only=trueUna canalización de agregación que modifica la estructura de los documentos de eventos de cambio
Si transforma sus documentos de eventos de cambio de MongoDB, debe hacer lo siguiente para aplicar esquemas:
Para obtener más información sobre las opciones de configuración anteriores, consulte la página Cambiar propiedades de transmisión.
Especificar esquemas
Puede especificar esquemas para los documentos entrantes mediante la sintaxis de esquema de Avro. Haga clic en las siguientes pestañas para ver cómo especificar un esquema para los valores y las claves de los documentos:
output.format.key=schema output.schema.key=<your avro schema>
output.format.value=schema output.schema.value=<your avro schema>
Para ver un ejemplo que demuestra cómo especificar un esquema, consulte el ejemplo de uso Especificar un esquema.
Para obtener más información sobre Avro Schema, consulte la guía Formatos de datos.
Importante
Convertidores
Si desea enviar sus datos a través de Apache Kafka con codificación binaria Avro, debe usar un conversor Avro. Para más información, consulte la guía sobre conversores.
Inferir un esquema
Puede configurar su conector de origen para que infiera un esquema para los documentos entrantes. Esta opción es útil para desarrollo y para fuentes de datos que no cambian de estructura con frecuencia, pero para la mayoría de las implementaciones de producción, recomendamos especificar un esquema.
Puede hacer que el conector infiera un esquema especificando las siguientes opciones:
output.format.value=schema output.schema.infer.value=true
El conector de origen puede inferir esquemas para documentos entrantes que contienen documentos anidados almacenados en matrices. A partir de la versión 1.9 del conector, la inferencia de esquemas recopilará el tipo de datos adecuado para los campos en lugar de usar la asignación de tipo string de forma predeterminada si existen diferencias entre los documentos anidados descritos en los siguientes casos:
Un campo está presente en un documento pero falta en otro.
Un campo está presente en un documento pero
nullen otro.Un campo es una matriz con elementos de cualquier tipo en un documento pero que tiene elementos adicionales o elementos de otros tipos de datos en otro.
Un campo es un arreglo con elementos de cualquier tipo en un documento, pero un arreglo vacío en otro.
Si los tipos de campos entran en conflicto entre documentos anidados, el conector envía el conflicto al esquema del campo y, de manera predeterminada, establece una asignación de tipo string.
Nota
No se puede inferir el esquema de clave
El conector no admite la inferencia de esquemas de claves. Si desea usar un esquema de claves y transformar sus documentos de eventos de cambio de MongoDB, debe especificar un esquema de claves como se describe en la sección "Especificar esquemas" de esta guía.