Docs Menu
Docs Home
/ /

Opciones de configuración de lectura por lotes

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

Nota

Si utilizas SparkConf Para establecer las configuraciones de lectura del conector, agregue el prefijo 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 modifican el comportamiento de lectura de las lecturas por lotes que utilizan el conector Spark. Al dividir los datos en particiones, se pueden 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.

AutoBucketPartitioner es la configuración predeterminada del particionador. Muestrea los datos para generar particiones y utiliza la etapa de agregación $bucketAuto para paginar. Con esta configuración, puede particionar los datos en uno o varios campos, incluidos los campos anidados.

Nota

Claves compuestas

La configuración AutoBucketPartitioner requiere la versión 7.0 o superior del servidor MongoDB para admitir claves compuestas.

Para utilizar esta configuración, establezca 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 que se usarán para la partición. 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) de cada partición. Particiones más pequeñas crean más particiones que contienen menos documentos. Dado que esta configuración utiliza el tamaño promedio de los documentos para determinar la cantidad 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 usará para un campo proyectado que contiene todos los campos utilizados para particionar la colección. Se recomienda cambiar el valor de esta propiedad solo si cada documento ya contiene el campo __idx.

Por defecto: __idx

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

Para utilizar esta configuración, establezca 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 la partición, 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

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 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 utilizar esta configuración, establezca 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 versiones posteriores, la operación de fragmentación crea un gran fragmento inicial que abarca todos los valores de clave de fragmentación, lo que hace que el particionador fragmentado sea ineficiente. No recomendamos usar el particionador fragmentado al conectarse a MongoDB v6.0 y versiones posteriores.

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

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

Para utilizar esta configuración, establezca 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 la partición, 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 PaginateIntoPartitionsPartitioner pagina los datos dividiendo el recuento de documentos en la colección por el número máximo de particiones permitidas.

Para utilizar esta configuración, establezca 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 la partición, 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 SinglePartitionPartitioner crea una sola partición.

Para utilizar esta configuración, establezca 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 especifica una configuración tanto en la línea connection.uri como en la línea correspondiente, 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 de la configuració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