Visão geral
Você pode configurar as seguintes propriedades ao ler dados do MongoDB no modo de lote.
Observação
Se você usa o SparkConf
para definir as configurações de leitura do conector, insira spark.mongodb.read.
como prefixo em cada propriedade.
Nome da propriedade | Descrição | ||
---|---|---|---|
| Required. The connection string configuration key. Default: mongodb://localhost:27017/ | ||
| Required. The database name configuration. | ||
| Required. The collection name configuration. | ||
| The comment to append to the read operation. Comments appear in the
output of the Database Profiler. Default: None | ||
| MongoClientFactory configuration key. You can specify a custom implementation which must implement the
com.mongodb.spark.sql.connector.connection.MongoClientFactory
interface.Default: com.mongodb.spark.sql.connector.connection.DefaultMongoClientFactory | ||
| The partitioner full class name. You can specify a custom implementation that must implement the
com.mongodb.spark.sql.connector.read.partitioner.Partitioner
interface.See the
Partitioner Configuration section for more
information about partitioners. Default: com.mongodb.spark.sql.connector.read.partitioner.SamplePartitioner | ||
| Partitioner configuration prefix. See the
Partitioner Configuration section for more
information about partitioners. | ||
| The number of documents to sample from the collection when inferring the schema. Default: 1000 | ||
| Whether to enable Map types when inferring the schema. When enabled, large compatible struct types are inferred to a
MapType instead.Default: true | ||
| Minimum size of a StructType before inferring as a MapType .Default: 250 | ||
| Specifies a custom aggregation pipeline to apply to the collection
before sending data to Spark. The value must be either an extended JSON single document or list
of documents. A single document resembles the following:
A list of documents resembles the following:
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 | ||
| Specifies whether to allow storage to disk when running the
aggregation. Default: true | ||
| When true , the connector converts BSON types not supported by Spark into
extended JSON strings.
When false , the connector uses the original relaxed JSON format for
unsupported types.Default: false |
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 os seguintes particionadores:
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.
SamplePartitioner
Configuração
SamplePartitioner
é a configuração padrão do particionador. Esta configuração permite especificar um campo de partição, tamanho da 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.
ShardedPartitioner
Configuração
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.
PaginateBySizePartitioner
Configuração
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
Configuração
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: |
SinglePartitionPartitioner
Configuração
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 spark.mongodb.read.readPreference.name=primaryPreferred
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