¿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 fragmentado, establece que la ubicación preferida sea el nombre de host del sistema independiente o del conjunto de réplicas.
Para un sistema fragmentado, establece que la ubicación preferida sean los nombres de host de los fragmentos.
Para promover la localidad de los datos, recomendamos tomar las siguientes acciones:
Asegúrese de que haya un Spark Worker en uno de los hosts para sistemas no fragmentados o uno por fragmentación para sistemas fragmentados.
Utilice un
nearestpreferencia de lectura para leer desde elmongodlocal.Para un clúster fragmentado, tenga un en los mismos nodos y use
mongoslalocalThresholdconfiguración para conectarse al más cercano. Para particionar los datos pormongosfragmento, use el Configuración de 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 la 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?
MongoConnector incluye una caché que permite a los trabajadores compartir un único MongoClient entre subprocesos. Para especificar el tiempo durante el cual se mantendrá disponible un MongoClient, incluya la opción mongodb.keep_alive_ms al ejecutar 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
Dado que la memoria caché se configura antes de que la configuración de Spark esté disponible, debe usar una propiedad del sistema para configurarla.