Visão geral
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 | ||
|---|---|---|---|
| Obrigatório. | ||
| Obrigatório. | ||
| Obrigatório. | ||
| O comentário a ser anexado à operação de leitura. Os comentários aparecem na saída do Analisador de banco de dados. | ||
| 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:
| ||
| Se você definir a | ||
| Chave de configuração MongoClientFactory. | ||
| O nome da classe completa do particionador. Você pode especificar uma implementação personalizada que deve implementar a | ||
| Prefixo de | ||
| O número de documentos a serem amostrados da coleção ao inferir | ||
| Se os tipos de Mapa devem ser habilitados ao inferir o esquema. | ||
| Tamanho mínimo de | ||
| Especifica um pipeline de agregação personalizado a ser aplicado à coleção antes de enviar dados para o Spark. Uma lista de documentos é semelhante ao seguinte: 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 | ||
| Especifica se o armazenamento em disco deve ser permitido ao executar a agregação. | ||
|
| ||
| 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 |
Configurações do particionador
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.
Configuração do AutoBucketPartitioner (padrão)
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 |
|---|---|
| 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: |
| 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: |
| O número de amostras a serem coletadas por partição. Padrão: |
| 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 Padrão: |
SamplePartitioner Configuration
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 | |
|---|---|---|
| O campo a ser usado para o particionamento, que deve ser um campo único. Padrão: | |
| O tamanho (em MB) de cada partição. Tamanhos menores de partição criam mais partições contendo menos documentos. Padrão: | |
| O número de amostras a serem coletadas por partição. O número total de amostras coletadas é: Padrão: |
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.
Configuração do ShardedPartitioner
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
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.
O particionador fragmentado não é compatível com chaves de shard com hash.
Configuração do PaginateBySizePartitioner
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 |
|---|---|
| O campo a ser usado para o particionamento, que deve ser um campo único. Padrão: |
| O tamanho (em MB) de cada partição. Tamanhos de partição menores criam mais partições contendo menos documentos. Padrão: |
PaginateIntoPartitionsPartitioner Configuration
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 |
|---|---|
| O campo a ser usado para o particionamento, que deve ser um campo único. Padrão: |
| O número de partições a serem criadas. Padrão: |
Configuração do SinglePartitionPartitioner
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.
Especificando propriedades em connection.uri
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