Overview
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 | ||
|---|---|---|---|
| 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 | ||
| The parsing strategy to use when handling documents that don't match the
expected schema. This option accepts the following values:
Default: ReadConfig.ParseMode.FAILFAST | ||
| 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 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: Las canalizaciones de agregación personalizadas deben ser compatibles con la estrategia del particionador. Por ejemplo, las etapas de agregación 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 | ||
| 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 |
Configuraciones del particionador
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.
Configuración de AutoBucketPartitioner (predeterminada)
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 |
|---|---|
| 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: |
| 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: |
| El número de muestras a tomar por partición. Por defecto: |
| 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 Por defecto: |
Configuración de SamplePartitioner
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 | |
|---|---|---|
| El campo a utilizar para la partición, 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: | |
| 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 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.
Configuración de ShardedPartitioner
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
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.
El particionador fragmentado no es compatible con claves fragmentadas con hash.
Configuración de PaginateBySizePartitioner
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 |
|---|---|
| El campo a utilizar para la partición, que debe ser un campo único. Por defecto: |
| El tamaño (en MB) de cada partición. Particiones más pequeñas. crear más particiones que contengan menos documentos. Por defecto: |
PaginateIntoPartitionsPartitioner Configuration
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 |
|---|---|
| El campo a utilizar para la partición, que debe ser un campo único. Por defecto: |
| El número de particiones a crear. Por defecto: |
Configuración de SinglePartitionPartitioner
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.
Especificación de propiedades en connection.uri
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