¿Cómo puedo lograr la localidad de datos?
Para cualquier implementación de MongoDB, el conector Spark establece la ubicación preferida para que un DataFrame o un conjunto de datos sea donde se encuentran los datos.
Para un sistema no segmentado, establece la ubicación preferida como el(los) hostname(s) del autónomo o el set de réplicas.
Para un sistema fragmentado, establece que la ubicación preferida sean los nombres de host de los fragmentos.
Para promover la localización de datos, recomendamos tomar las siguientes acciones:
Asegúrese de que haya un Spark Worker en uno de los hosts para un sistema no particionado o uno por partición para sistemas particionados.
Utiliza un
nearestpreferencia de lectura para leer desde el localmongod.Para un clúster particionado, tenga un
mongosen los mismos nodos y utilice la configuración delocalThresholdpara conectarse almongosmás cercano. Para particionar los datos por partición, utilice la Configuración del ShardedPartitioner.
¿Cómo Unrecognized pipeline stage name resuelvo el error?
En las implementaciones de MongoDB con versiones mixtas de mongod, es posible recibir un error Unrecognized pipeline stage name: '$sample'. Para mitigar esta situación, configura explícitamente el particionador que se va a utilizar y define el esquema al usar DataFrames.
¿Cómo puedo utilizar mTLS para autenticación?
Para usar mTLS, incluya las siguientes opciones cuando ejecute spark-submit:
--driver-java-options -Djavax.net.ssl.trustStore=<path to your truststore.jks file> \ --driver-java-options -Djavax.net.ssl.trustStorePassword=<your truststore password> \ --driver-java-options -Djavax.net.ssl.keyStore=<path to your keystore.jks file> \ --driver-java-options -Djavax.net.ssl.keyStorePassword=<your keystore password> \ --conf spark.executor.extraJavaOptions=-Djavax.net.ssl.trustStore=<path to your truststore.jks file> \ --conf spark.executor.extraJavaOptions=-Djavax.net.ssl.trustStorePassword=<your truststore password> \ --conf spark.executor.extraJavaOptions=-Djavax.net.ssl.keyStore=<path to your keystore.jks file> \ --conf spark.executor.extraJavaOptions=-Djavax.net.ssl.keyStorePassword=<your keystore password> \
¿Cómo puedo compartir una instancia de MongoClient entre subprocesos?
El MongoConnector incluye una caché que permite a los trabajadores compartir un solo MongoClient entre hilos. Para especificar el tiempo durante el cual se debe mantener disponible un MongoClient, incluya la opción mongodb.keep_alive_ms cuando ejecute spark-submit:
--driver-java-options -Dmongodb.keep_alive_ms=<number of milliseconds to keep MongoClient available>
De forma predeterminada, esta propiedad tiene un valor de 5000.
Nota
Debido a que la caché se configura antes de que Spark Configuration esté disponible, debe usar una propiedad del sistema para configurarla.