Aplicar esquemas
Nesta página
Visão geral
Neste guia, você pode aprender como aplicar esquemas a documentos recebidos em um conector de origem MongoDB Kafka.
Existem dois tipos de esquema no Kafka Connect, esquema chave e esquema de valor. O Kafka Connect envia mensagens ao Apache Kafka contendo seu valor e uma chave. Um esquema de chave impõe uma estrutura para chaves em mensagens enviadas ao Apache Kafka. Um esquema de valor impõe uma estrutura para valores em mensagens enviadas ao Apache Kafka.
Importante
Nota sobre terminologia
Este guia usa a definição Apache Kafka da palavra "chave", que difere ligeiramente da definição BSON. Em BSON, uma "chave" é um identificador de string exclusivo para um campo em um documento.
No Apache Kafka, uma "chave" é uma array de bytes enviada em uma mensagem usada para determinar em qual partição de um tópico a mensagem deve ser gravada. As chaves Kafka podem ser duplicadas de outras chaves ou null
.
A especificação de esquemas no conector é opcional e você pode especificar qualquer uma das seguintes combinações de esquemas:
Apenas um esquema de valor
Somente um esquema chave
Um esquema de valor e um esquema de chave
No schemas
Dica
Benefícios do esquema
Para ver uma discussão sobre os benefícios de usar esquemas com o Kafka Connect, consulte este artigo do Confluent.
Se você quiser enviar dados pelo Apache Kafka com um formato de dados específico, como Apache Avro ou JSON schema, consulte o guia Conversores .
Para saber mais sobre chaves e valores no Apache Kafka, consulte a introdução oficial do Apache Kafka.
Default Schemas
O conector fornece dois esquemas padrão:
Um esquema chave para o campo _id dos documentos do evento de alteração MongoDB.
Um esquema de valores para documentos de eventos de alteração do MongoDB.
Para saber mais sobre eventos de alteração, consulte nosso guia de change streams.
Para saber mais sobre esquemas padrão, consulte os esquemas padrão aqui no código-fonte MongoDB Kafka Connector.
Esquema Chave
O conector fornece um esquema de chave padrão para o campo _id
de alterar documentos de evento. Você deve usar o esquema de chave padrão, a menos que remova o campo _id
do documento de eventos de alteração usando uma das transformações descritas neste guia aqui.
Se você especificar uma dessas transformações e quiser usar um esquema de chaves para os documentos recebidos, deverá especificar um esquema de chaves conforme descrito na seção Especificar um esquema deste guia.
Você pode habilitar o esquema de chave padrão com a seguinte opção:
output.format.key=schema
Esquema de valor
O conector fornece um esquema de valores padrão para documentos de eventos de alteração. Você deve usar o esquema de valores padrão, a menos que transforme seus documentos de eventos de alteração conforme descrito neste guia.
Se você especificar uma dessas transformações e quiser usar um esquema de valores para os documentos recebidos, deverá usar um dos mecanismos descritos na seção esquemas para documentos transformados deste guia.
Você pode habilitar o esquema de valor padrão com a seguinte opção:
output.format.value=schema
Esquemas para documentos transformados
Existem duas maneiras de transformar seus documentos de eventos de mudança em um conector de origem:
A opção
publish.full.document.only=true
Um pipeline de agregação que modifica a estrutura dos documentos de eventos de alteração
Se você transformar seus documentos de eventos de alteração MongoDB, deverá fazer o seguinte para aplicar esquemas:
Para saber mais sobre as opções de configuração anteriores, consulte a página Propriedades do Change stream.
Especificar esquemas
Você pode utilizar a sintaxe Avro para definir esquemas de documentos recebidos. Clique nas abas a seguir para saber como definir um esquema para as chaves e valores do documento:
output.format.key=schema output.schema.key=<your avro schema>
output.format.value=schema output.schema.value=<your avro schema>
Para visualizar um exemplo que demonstra como especificar um esquema, consulte o exemplo de uso Especificar um esquema.
Para saber mais sobre o Avro Schema, consulte o guia Formatos de Dados.
Importante
Conversores
Para enviar seus dados com codificação binário Avro através do Apache Kafka, é necessário utilizar um conversor Avro. Para obter mais informações, consulte o guia sobre Conversores.
Infer a Schema
Você pode fazer com que seu conector de origem infira um esquema para documentos recebidos. Essa opção funciona bem para desenvolvimento e para fontes de dados que não mudam de estrutura com frequência, mas para a maioria das implantações de produção, recomendamos que você especifique um esquema.
Você pode ter o conector inferindo um esquema especificando as seguintes opções:
output.format.value=schema output.schema.infer.value=true
O conector de origem pode inferir esquemas para documentos recebidos que contêm documentos aninhados armazenados em arrays. A partir da versão 1.9 do conector, a inferência de esquema coletará o tipo de dados apropriado para os campos em vez de usar como padrão uma atribuição de tipo string
se houver diferenças entre os documentos aninhados descritos pelos seguintes casos:
Um campo está presente em um documento, mas ausente em outro.
Um campo está presente em um documento, mas
null
em outro.Um campo é uma array com elementos de qualquer tipo em um documento, mas tem elementos adicionais ou elementos de outros tipos de dados em outro.
Um campo é uma array com elementos de qualquer tipo em um documento, mas uma array vazia em outro.
Se os tipos de campo entrarem em conflito entre documentos aninhados, o conector empurrará o conflito para baixo até o esquema para o campo e padronizará para uma tarefa de tipo string
.
Observação
Não é possível inferir esquema de chave
O conector não suporta a inferência de esquema de chaves. Se quiser usar um esquema de chaves e transformar os documentos de eventos de alteração do MongoDB, será necessário especificar um esquema de chaves, conforme descrito na seção especificar esquemas deste guia.