Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Opciones de configuración de lectura por lotes

Puedes configurar las siguientes propiedades al leer datos de MongoDB en modo por lotes.

Nota

Si usas SparkConf para configurar las configuraciones de lectura del conector, anteponer spark.mongodb.read. a cada propiedad.

Nombre de la propiedad
Descripción

connection.uri

Required.
The connection string configuration key.

Default: mongodb://localhost:27017/

database

Required.
The database name configuration.

collection

Required.
The collection name configuration.

comment

The comment to append to the read operation. Comments appear in the output of the Database Profiler.

Default: None

mode

The parsing strategy to use when handling documents that don't match the expected schema. This option accepts the following values:
  • ReadConfig.ParseMode.FAILFAST: Lanza una excepción al analizar un documento que no coincide con el esquema.

  • ReadConfig.ParseMode.PERMISSIVE: Establece los campos como null cuando los tipos de datos no coinciden con el esquema. Para almacenar cada documento no válido como una cadena JSON extendida, combine este valor con la opción columnNameOfCorruptRecord.

  • ReadConfig.ParseMode.DROPMALFORMED: Ignora cualquier documento que no coincida con el esquema.


Default: ReadConfig.ParseMode.FAILFAST

columnNameOfCorruptRecord

If you set the mode option to ReadConfig.ParseMode.PERMISSIVE, this option specifies the name of the new column that stores the invalid document as extended JSON. If you're using an explicit schema, it must include the name of the new column. If you're using an inferred schema, the Spark Connector adds the new column to the end of the schema.

Default: None

mongoClientFactory

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

partitioner

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.options.

Partitioner configuration prefix.
See the Partitioner Configuration section for more information about partitioners.

sampleSize

The number of documents to sample from the collection when inferring
the schema.

Default: 1000

sql.inferSchema.mapTypes.enabled

Whether to enable Map types when inferring the schema.
When enabled, large compatible struct types are inferred to a MapType instead.

Default: true

sql.inferSchema.mapTypes.minimum.key.size

Minimum size of a StructType before inferring as a MapType.

Default: 250

aggregation.pipeline

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:
{"$match": {"closed": false}}
A list of documents resembles the following:
[{"$match": {"closed": false}}, {"$project": {"status": 1, "name": 1, "description": 1}}]

IMPORTANTE: Las canalizaciones de agregación personalizadas deben ser compatibles con la estrategia del particionador. Por ejemplo, las etapas de agregación como $group no funcionan con ningún particionador que cree más de una partición.

aggregation.allowDiskUse

Specifies whether to allow storage to disk when running the aggregation.

Default: true

outputExtendedJson

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

schemaHints

Specifies a partial schema of known field types to use when inferring the schema for the collection. To learn more about the schemaHints option, see the Specify Known Fields with Schema Hints section.

Default: None

Los particionadores cambian el comportamiento de lectura de las lecturas por lotes que utilizan el Spark Connector. Al dividir los datos en particiones, puedes ejecutar transformaciones en paralelo.

Esta sección contiene información de configuración para el siguiente particionador:

Nota

Solo lecturas por lotes

Dado que el motor de procesamiento de flujos de datos produce un único flujo de datos, los particionadores no afectan a las lecturas de transmisión.

La AutoBucketPartitioner es la configuración de particionador por defecto. Muestra los datos para generar particiones y utiliza la etapa de agregación $bucketAuto para paginación. Mediante esta configuración, puedes particionar los datos en uno o más campos, incluidos los campos anidados.

Nota

Llaves compuestas

La configuración AutoBucketPartitioner requiere la versión 7.0 o superior de MongoDB Server para soportar claves compuestas.

Para usar esta configuración, establece la opción de configuración partitioner en com.mongodb.spark.sql.connector.read.partitioner.AutoBucketPartitioner.

Nombre de la propiedad
Descripción

partitioner.options.partition.fieldList

La lista de campos a utilizar para el particionamiento. El valor puede ser un solo nombre de campo o una lista de campos separados por comas.

Por defecto: _id

partitioner.options.partition.chunkSize

El tamaño promedio (MB) para cada partición. Tamaños de partición más pequeños crean más particiones que contienen menos documentos. Debido a que esta configuración utiliza el tamaño promedio de los documentos para determinar el número de documentos por partición, es posible que las particiones no tengan el mismo tamaño.

Por defecto: 64

partitioner.options.partition.samplesPerPartition

El número de muestras a tomar por partición.

Por defecto: 100

partitioner.options.partition.partitionKeyProjectionField

El nombre de campo que se debe usar para un campo proyectado que contiene todos los campos usados para dividir la colección en particiones. Recomendamos cambiar el valor de esta propiedad solo si cada documento ya contiene el campo __idx.

Por defecto: __idx

La configuración de SamplePartitioner es similar a la configuración de AutoBucketPartitioner, pero no utiliza la etapa de agregación de $bucketAuto. Esta configuración permite especificar un campo de partición, el tamaño de la partición y el número de muestras por partición.

Para usar esta configuración, establece la opción de configuración partitioner en com.mongodb.spark.sql.connector.read.partitioner.SamplePartitioner.

Nombre de la propiedad
Descripción

partitioner.options.partition.field

El campo a utilizar para el particionamiento, que debe ser un campo único.

Por defecto: _id

partitioner.options.partition.size

El tamaño (en MB) de cada partición. Las particiones más pequeñas crean más particiones que contienen menos documentos.

Por defecto: 64

partitioner.options.samples.per.partition

El número de muestras a tomar por partición. El número total de muestras tomadas es:

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

Por defecto: 10

Ejemplo

Para una colección con 640 documentos y un tamaño promedio de documento de 0,5 MB, la configuración por defecto de SamplePartitioner crea 5 particiones con 128 documentos por partición.

El conector Spark muestrea 50 documentos (el valor predeterminado es 10 por partición deseada) y define 5 particiones seleccionando rangos de campos de partición de los documentos muestreados.

La configuración ShardedPartitioner particiona automáticamente los datos según la configuración de su fragmento.

Para usar esta configuración, establece la opción de configuración partitioner en com.mongodb.spark.sql.connector.read.partitioner.ShardedPartitioner.

Importante

Restricciones de ShardedPartitioner

  1. En MongoDB Server v6.0 y posteriores, la operación de partición crea un gran fragmento inicial para cubrir todos los valores de la clave de partición, lo que hace que el particionador particionado sea ineficiente. No recomendamos usar el particionador particionado cuando se conecta a MongoDB v6.0 y posteriores.

  2. El particionador fragmentado no es compatible con claves fragmentadas con hash.

La configuración PaginateBySizePartitioner pagina los datos mediante el uso del tamaño promedio de documentos para dividir la colección en fragmentos de tamaño promedio.

Para usar esta configuración, establece la opción de configuración partitioner en com.mongodb.spark.sql.connector.read.partitioner.PaginateBySizePartitioner.

Nombre de la propiedad
Descripción

partitioner.options.partition.field

El campo a utilizar para el particionamiento, que debe ser un campo único.

Por defecto: _id

partitioner.options.partition.size

El tamaño (en MB) de cada partición. Particiones más pequeñas.

crear más particiones que contengan menos documentos.

Por defecto: 64

La configuración de PaginateIntoPartitionsPartitioner pagina los datos dividiendo el recuento de documentos de la colección por el número máximo de particiones permitidas.

Para usar esta configuración, establece la opción de configuración partitioner en com.mongodb.spark.sql.connector.read.partitioner.PaginateIntoPartitionsPartitioner.

Nombre de la propiedad
Descripción

partitioner.options.partition.field

El campo a utilizar para el particionamiento, que debe ser un campo único.

Por defecto: _id

partitioner.options.max.number.of.partitions

El número de particiones a crear.

Por defecto: 64

La configuración de SinglePartitionPartitioner crea una única partición.

Para usar esta configuración, establece la opción de configuración partitioner en com.mongodb.spark.sql.connector.read.partitioner.SinglePartitionPartitioner.

Si utiliza SparkConf para especificar cualquiera de las configuraciones anteriores, puede incluirlas en la connection.uri configuración o enumerarlas individualmente.

El siguiente ejemplo de código muestra cómo especificar la base de datos, la colección y la preferencia de lectura como parte de la configuración connection.uri:

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

Para mantener el connection.uri más breve y hacer que la configuración sea más fácil de leer, puedes especificarlos individualmente en su lugar:

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

Importante

Si se especifica una configuración tanto en el connection.uri como en una línea independiente, la configuración connection.uri tiene prioridad. Por ejemplo, en la siguiente configuración, la base de datos de conexión es foobar, porque es el valor en la opción connection.uri:

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

Volver

Lea

En esta página