Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Opciones de configuración de lectura por lotes

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

Nota

Si utiliza SparkConf para establecer las configuraciones de lectura del conector, anteponga spark.mongodb.read. a cada propiedad.

Nombre de la propiedad
Descripción

connection.uri

Requerido.
Clave de configuración de la cadena de conexión.

Valor predeterminado: mongodb://localhost:27017/

database

Requerido.
La configuración del nombre de la base de datos.

collection

Requerido.
La configuración del nombre de la colección.

comment

Comentario que se añadirá a la operación de lectura. Los comentarios aparecen en la salida del Generador de perfiles de base de datos. Valor

predeterminado: Ninguno.

mode

La estrategia de análisis que se debe utilizar al manejar documentos que no coincidan con el esquema esperado. Esta opción acepta los siguientes valores:

  • ReadConfig.ParseMode.FAILFAST: Lanza una excepción al analizar un documento que no coincide con el esquema.

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

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


Por defecto: ReadConfig.ParseMode.FAILFAST

columnNameOfCorruptRecord

Si establece la mode opción ReadConfig.ParseMode.PERMISSIVE en, esta opción especifica el nombre de la nueva columna que almacena el documento no válido como JSON extendido. Si utiliza un esquema explícito, este debe incluir el nombre de la nueva columna. Si utiliza un esquema inferido, el conector de Spark agrega la nueva columna al final del esquema.

Predeterminado: Ninguno

mongoClientFactory

Clave de configuración de MongoClientFactory.
Puede especificar una implementación personalizada que debe implementar la com.mongodb.spark.sql.connector.connection.MongoClientFactory interfaz.

Valor predeterminado:. com.mongodb.spark.sql.connector.connection.DefaultMongoClientFactory

partitioner

El nombre completo de la clase del particionador.

Puede especificar una implementación personalizada que debe implementar la com.mongodb.spark.sql.connector.read.partitioner.Partitioner interfaz. Consulte la
sección Configuración del particionador para obtener más información sobre los particionadores.

Valor predeterminado: com.mongodb.spark.sql.connector.read.partitioner.SamplePartitioner

partitioner.options.

Prefijo de
configuración del particionador. Consulte la sección Configuración del particionador para obtener más información sobre los particionadores.

sampleSize

Número de documentos que se muestrearán de la colección al inferir
el esquema.

Valor predeterminado: 1000

sql.inferSchema.mapTypes.enabled

Indica si se deben habilitar los tipos Map al inferir el esquema.
Cuando está habilitado, los tipos de estructura compatibles grandes se infieren como en su MapType lugar.

Valor predeterminado: true

sql.inferSchema.mapTypes.minimum.key.size

Tamaño mínimo de un StructType antes de inferirlo como MapType un. Valor

predeterminado: 250

aggregation.pipeline

Especifica una canalización de agregación personalizada que se aplicará a la colección antes de enviar los datos a Spark.
El valor debe ser un documento JSON único extendido o una lista de documentos.
Un documento único tiene el siguiente formato:

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

Una lista de documentos se parece a lo siguiente:

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

IMPORTANTE: Los pipeline de agregación personalizados 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

Especifica si se debe permitir el almacenamiento en disco al ejecutar la agregación.

Valor predeterminado: true

outputExtendedJson

trueCuando, el conector convierte los tipos BSON no compatibles con Spark en cadenas JSON extendidas.false Cuando, el conector utiliza el formato JSON relajado original para los tipos no compatibles.

Valor predeterminado: false

schemaHints

Especifica un esquema parcial de tipos de campo conocidos que se utilizará al inferir el esquema de la colección. Para obtener más información sobre la schemaHints opción, consulte la sección Especificar campos conocidos con sugerencias de esquema.

Valor predeterminado: Ninguno

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 agrupadas

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

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

Por defecto: 100

partitioner.options.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 Spark Connector muestra 50 documentos (el valor por defecto es 10 por partición prevista) 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 tus particiones.

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. Tamaños de partición más pequeños

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 configuración connection.uri 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