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 | ||
| 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 |
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 los siguientes particionadores:
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.
SamplePartitioner Configuración
SamplePartitioner Es la configuración predeterminada del particionador. 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 es 10 por partición deseada) y define 5 particiones seleccionando rangos de campos de partición de los documentos muestreados.
ShardedPartitioner Configuración
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.
PaginateBySizePartitioner Configuración
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 Configuración
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: |
SinglePartitionPartitioner Configuración
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 spark.mongodb.read.readPreference.name=primaryPreferred
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