Overview
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 | ||
|---|---|---|---|
| Requerido. | ||
| Requerido. | ||
| Requerido. | ||
| 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 | ||
| 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:
| ||
| Si establece la | ||
| Clave de configuración de MongoClientFactory. | ||
| El nombre completo de la clase del particionador. Puede especificar una implementación personalizada que debe implementar la | ||
| Prefijo de | ||
| Número de documentos que se muestrearán de la colección al inferir | ||
| Indica si se deben habilitar los tipos Map al inferir el esquema. | ||
| Tamaño mínimo de un | ||
| Especifica una canalización de agregación personalizada que se aplicará a la colección antes de enviar los datos a Spark. Una lista de documentos se parece a lo siguiente: IMPORTANTE: Los pipeline de agregación personalizados deben ser compatibles con la estrategia del particionador. Por ejemplo, las etapas de agregación como | ||
| Especifica si se debe permitir el almacenamiento en disco al ejecutar la agregación. | ||
|
| ||
| 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 |
Configuraciones del particionador
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.
Configuración de AutoBucketPartitioner (por defecto)
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 |
|---|---|
| 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: |
| 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: |
| El número de muestras a tomar por partición. Por defecto: |
| 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 Por defecto: |
Configuración de SamplePartitioner
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 | |
|---|---|---|
| El campo a utilizar para el particionamiento, que debe ser un campo único. Por defecto: | |
| 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: | |
| El número de muestras a tomar por partición. El número total de muestras tomadas es: Por defecto: |
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.
Configuración de ShardedPartitioner
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
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.
El particionador fragmentado no es compatible con claves fragmentadas con hash.
Configuración de PaginateBySizePartitioner
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 |
|---|---|
| El campo a utilizar para el particionamiento, que debe ser un campo único. Por defecto: |
| 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: |
PaginateIntoPartitionsPartitioner Configuration
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 |
|---|---|
| El campo a utilizar para el particionamiento, que debe ser un campo único. Por defecto: |
| El número de particiones a crear. Por defecto: |
Configuración de SinglePartitionPartitioner
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.
Especificación de propiedades en connection.uri
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