Perguntas frequentes
Como posso obter a localidade dos dados?
Para qualquer implantação do MongoDB, o Spark Connector define o local preferencial para que um DataFrame ou Dataset esteja onde os dados estão.
Para um sistema não fragmentado, ele define o local preferencial como o(s) nome(s) de host do autônomo ou do conjunto de réplicas.
Para um sistema fragmentado, ele define o local preferencial como o(s) nome(s) de host dos fragmentos.
Para promover a localidade dos dados, recomendamos realizar a seguinte ação:
Certifique-se de que há um Spark Worker em um dos hosts para sistemas não fragmentados ou um por shard para sistemas fragmentados.
Use uma preferência de leitura
nearest
para ler a partir domongod
local.Para um cluster fragmentado, tenha um
mongos
nos mesmos nós e use a configuraçãolocalThreshold
para se conectar aomongos
mais próximo. Para particionar os dados por fragmento, use aShardedPartitioner
.
Como Unrecognized pipeline stage name
resolvo o erro?
Em sistemas do MongoDB com versões mistas do mongod
, é possível obter um erro Unrecognized pipeline stage name: '$sample'
. Para mitigar esta situação, configure explicitamente o particionador para usar e defina o esquema ao usar DataFrames.
Como posso usar o mTLS para autenticação?
Para usar o mTLS, inclua as seguintes opções ao executar 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> \
Como posso compartilhar uma instância do MongoClient entre threads?
O MongoConnector inclui um cache que permite que os trabalhadores compartilhem um único MongoClient
entre threads. Para especificar o período de tempo para manter um MongoClient
disponível, inclua a opção mongodb.keep_alive_ms
ao executar spark-submit
:
--driver-java-options -Dmongodb.keep_alive_ms=<number of milliseconds to keep MongoClient available>
Por padrão, esta propriedade tem um valor de 5000
.
Observação
Como o cache é configurado antes que a configuração Spark esteja disponível, você deve usar uma propriedade do sistema para configurá-lo.