Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Opções de configuração de leitura em lote

Você pode configurar as seguintes propriedades ao ler dados do MongoDB no modo de lote.

Observação

Se você usar SparkConf para definir as configurações de leitura do conector, insira spark.mongodb.read. como prefixo em cada propriedade.

Nome da propriedade
Descrição

connection.uri

Obrigatório.
A chave de

configuração da string de conexão . Padrão: mongodb://localhost:27017/

database

Obrigatório.
A configuração do nome do banco de dados.

collection

Obrigatório.
A configuração do nome da coleção.

comment

O comentário a ser anexado à operação de leitura. Os comentários aparecem na saída do Analisador de banco de dados.

Padrão: nenhum

mode

A estratégia de análise a ser usada ao lidar com documentos que não correspondem ao esquema esperado. Esta opção aceita os seguintes valores:

  • ReadConfig.ParseMode.FAILFAST: Lança uma exceção ao analisar um documento que não corresponde ao esquema.

  • ReadConfig.ParseMode.PERMISSIVE: Define campos para null quando os tipos de dados não correspondem ao esquema. Para armazenar cada documento inválido como uma string JSON estendida, combine este valor com a opção columnNameOfCorruptRecord .

  • ReadConfig.ParseMode.DROPMALFORMED: ignora qualquer documento que não corresponda ao esquema.


Padrão: ReadConfig.ParseMode.FAILFAST

columnNameOfCorruptRecord

Se você definir a mode opção ReadConfig.ParseMode.PERMISSIVE como, essa opção especificará o nome da nova coluna que armazena o documento inválido como JSON estendido. Se você estiver usando um esquema explícito, ele deverá incluir o nome da nova coluna. Se você estiver usando um esquema inferido, o conector Spark adicionará a nova coluna ao final do esquema.

Padrão: nenhum

mongoClientFactory

Chave de configuração MongoClientFactory.
Você pode especificar uma implementação personalizada que deve implementar a com.mongodb.spark.sql.connector.connection.MongoClientFactory interface .

Padrão: com.mongodb.spark.sql.connector.connection.DefaultMongoClientFactory

partitioner

O nome da classe completa do particionador.

Você pode especificar uma implementação personalizada que deve implementar a com.mongodb.spark.sql.connector.read.partitioner.Partitioner interface. Consulte a seção
Configuração do particionador para obter mais informações sobre particionadores.

Padrão: com.mongodb.spark.sql.connector.read.partitioner.SamplePartitioner

partitioner.options.

Prefixo de
configuração do particionador. Consulte a seção Configuração do particionador para obter mais informações sobre particionadores.

sampleSize

O número de documentos a serem amostrados da coleção ao inferir
o esquema.

Padrão: 1000

sql.inferSchema.mapTypes.enabled

Se os tipos de Mapa devem ser habilitados ao inferir o esquema.
Quando habilitados, tipos de estrutura grandes compatíveis são inferidos para um em vez MapType disso.

Padrão: true

sql.inferSchema.mapTypes.minimum.key.size

Tamanho mínimo de StructType antes de inferir MapType como.

Padrão: 250

aggregation.pipeline

Especifica um pipeline de agregação personalizado a ser aplicado à coleção antes de enviar dados para o Spark.
O valor deve ser um documento único JSON estendido ou uma lista de documentos.
Um único documento se assemelha ao seguinte:

{"$match": {"closed": false}}

Uma lista de documentos é semelhante ao seguinte:

[{"$match": {"closed": false}}, {"$project": {"status": 1, "name": 1, "description": 1}}]

IMPORTANTE: os pipelines de agregação personalizados devem ser compatíveis com a estratégia do particionador. Por exemplo, estágios de agregação como $group não funcionam com nenhum particionador que crie mais de uma partição.

aggregation.allowDiskUse

Especifica se o armazenamento em disco deve ser permitido ao executar a agregação.

Padrão: true

outputExtendedJson

trueQuando, o conector converte tipos BSON não suportados pelo Spark em strings JSON estendidas.false Quando, o conector usa o formato JSON relaxado original para tipos não suportados.

Padrão: false

schemaHints

Especifica um esquema parcial de tipos de campo conhecidos a serem usados ao inferir o esquema para a coleção. Para saber mais sobre a schemaHints opção, consulte a seção Especificar campos conhecidos com dicas de esquema.

Padrão: nenhum

Particionadores alteram o comportamento de leitura das leituras em lote que usam o Conector Spark. Ao dividir os dados em partições, você pode executar transformações em paralelo.

Esta seção contém informações de configuração para o seguinte particionador:

Observação

Somente leituras em lote

Como o mecanismo de processamento de fluxo de dados produz um único fluxo de dados, os particionadores não afetam as leituras de streaming.

O AutoBucketPartitioner é a configuração padrão do particionador. Ele coleta amostras dos dados para gerar partições e usa o estágio de agregação $bucketAuto para paginar. Ao usar essa configuração, você pode particionar os dados em um ou vários campos, incluindo campos aninhados.

Observação

Chaves compostas

A configuração do AutoBucketPartitioner exige o MongoDB Server versão 7.0 ou superior para suportar chaves compostas.

Para usar esta configuração, defina a opção de configuração partitioner como com.mongodb.spark.sql.connector.read.partitioner.AutoBucketPartitioner.

Nome da propriedade
Descrição

partitioner.options.fieldList

A lista de campos a serem usados para o particionamento. O valor pode ser um único nome de campo ou uma lista de campos separados por vírgula.

Padrão: _id

partitioner.options.chunkSize

O tamanho médio (MB) para cada partição. Tamanhos de partição menores criam mais partições contendo menos documentos. Como essa configuração usa o tamanho médio do documento para determinar o número de documentos por partição, as partições podem não ter o mesmo tamanho.

Padrão: 64

partitioner.options.samplesPerPartition

O número de amostras a serem coletadas por partição.

Padrão: 100

partitioner.options.partitionKeyProjectionField

O nome do campo a ser usado para um campo projetado que contém todos os campos usados para dividir a coleção. Recomendamos alterar o valor dessa propriedade somente se cada documento já contiver o campo __idx .

Padrão: __idx

A configuração SamplePartitioner é semelhante à configuração AutoBucketPartitioner, mas não usa o estágio de agregação $bucketAuto. Esta configuração permite especificar um campo de partição, tamanho de partição e número de amostras por partição.

Para usar esta configuração, defina a opção de configuração partitioner como com.mongodb.spark.sql.connector.read.partitioner.SamplePartitioner.

Nome da propriedade
Descrição

partitioner.options.partition.field

O campo a ser usado para o particionamento, que deve ser um campo único.

Padrão: _id

partitioner.options.partition.size

O tamanho (em MB) de cada partição. Tamanhos menores de partição criam mais partições contendo menos documentos.

Padrão: 64

partitioner.options.samples.per.partition

O número de amostras a serem coletadas por partição. O número total de amostras coletadas é:

samples per partition * ( count / number of documents per partition)

Padrão: 10

Exemplo

Para uma coleção com 640 documentos e com um tamanho médio de 0,5 MB por documento, a configuração padrão SamplePartitioner cria 5 partições com 128 documentos por partição.

O Conector Spark faz amostras de 50 documentos (padrão de 10 por cada partição pretendida) e define 5 partições ao selecionar intervalos de campos de partição dos documentos de amostra.

A configuração do ShardedPartitioner automaticamente particiona os dados com base na sua configuração de fragmento.

Para usar esta configuração, defina a opção de configuração partitioner como com.mongodb.spark.sql.connector.read.partitioner.ShardedPartitioner.

Importante

Restrições do ShardedPartitioner

  1. No MongoDB Server v6.0 e posterior, a operação de fragmentação cria um grande chunk inicial para cobrir todos os valores de chave de shard, tornando o particionador fragmentado ineficiente. Não recomendamos usar o particionador fragmentado quando conectado ao MongoDB v6.0 e posterior.

  2. O particionador fragmentado não é compatível com chaves de shard com hash.

A configuração do PaginateBySizePartitioner pagina os dados utilizando o tamanho médio do documento para dividir a coleção em partes de tamanho médio.

Para usar esta configuração, defina a opção de configuração partitioner como com.mongodb.spark.sql.connector.read.partitioner.PaginateBySizePartitioner.

Nome da propriedade
Descrição

partitioner.options.partition.field

O campo a ser usado para o particionamento, que deve ser um campo único.

Padrão: _id

partitioner.options.partition.size

O tamanho (em MB) de cada partição. Tamanhos de partição menores

criam mais partições contendo menos documentos.

Padrão: 64

A configuração do PaginateIntoPartitionsPartitioner pagina os dados dividindo a contagem de documentos na coleção pelo número máximo de partições permitidas.

Para usar esta configuração, defina a opção de configuração partitioner como com.mongodb.spark.sql.connector.read.partitioner.PaginateIntoPartitionsPartitioner.

Nome da propriedade
Descrição

partitioner.options.partition.field

O campo a ser usado para o particionamento, que deve ser um campo único.

Padrão: _id

partitioner.options.max.number.of.partitions

O número de partições a serem criadas.

Padrão: 64

A configuração do SinglePartitionPartitioner cria uma única partição.

Para usar esta configuração, defina a opção de configuração partitioner como com.mongodb.spark.sql.connector.read.partitioner.SinglePartitionPartitioner.

Se você usa SparkConf para especificar qualquer uma das configurações anteriores, você poderá incluí-las na configuração do connection.uri ou listá-las individualmente.

O exemplo de código abaixo mostra como especificar o banco de dados, coleção e preferência de leitura como parte da configuração do connection.uri:

spark.mongodb.read.connection.uri=mongodb://127.0.0.1/myDB.myCollection?readPreference=primaryPreferred

Para manter o connection.uri curto e facilitar a leitura das configurações, você pode especificá-las individualmente:

spark.mongodb.read.connection.uri=mongodb://127.0.0.1/
spark.mongodb.read.database=myDB
spark.mongodb.read.collection=myCollection

Importante

Se você especificar uma configuração em connection.uri e em sua própria linha, a configuração connection.uri terá precedência. Por exemplo, na configuração abaixo, o banco de dados de conexão é foobar, porque é o valor na configuração connection.uri:

spark.mongodb.read.connection.uri=mongodb://127.0.0.1/foobar
spark.mongodb.read.database=bar