FAQ
데이터 지역성을 달성하려면 어떻게 해야 하나요?
모든 MongoDB 배포의 경우 Spark Connector는 DataFrame 또는 Dataset의 기본 위치를 데이터가 있는 위치로 설정합니다.
비샤드 시스템의 경우 기본 위치를 독립형 또는 복제본 세트의 호스트 이름으로 설정합니다.
샤드 시스템의 경우 기본 위치를 샤드의 호스트 이름으로 설정합니다.
데이터 지역성을 촉진하려면 다음 조치를 수행하는 것이 좋습니다.
비샤드 시스템의 경우 호스트 중 하나에 Spark Worker가 있고, 샤드 시스템의 경우 샤드당 1개씩 있는지 확인합니다.
샤딩된 클러스터 의 경우 동일한 노드에
mongos
이 있고localThreshold
구성 설정을 사용하여 가장 가까운mongos
에 연결합니다. 샤드 별로 데이터를 분할하려면ShardedPartitioner
구성을 사용합니다.
오류를 해결하려면 어떻게 Unrecognized pipeline stage name
해야 하나요?
mongod
버전이 혼합된 MongoDB 배포에서는 Unrecognized pipeline stage name: '$sample'
오류가 발생할 수 있습니다. 이러한 상황을 완화하려면 DataFrames를 사용할 때 스키마를 사용하고 정의하도록 파티셔너를 명시적으로 구성합니다.
인증에 mTLS를 사용하려면 어떻게 해야 하나요?
mTLS를 사용하려면 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> \
스레드 간에 MongoClient 인스턴스를 공유하려면 어떻게 해야 하나요?
MongoConnector에는 작업자가 스레드 간에 단일 MongoClient
를 공유할 수 있는 캐시가 포함되어 있습니다. MongoClient
을(를) 사용 가능한 상태로 유지하려면 spark-submit
실행할 때 mongodb.keep_alive_ms
옵션을 포함합니다.
--driver-java-options -Dmongodb.keep_alive_ms=<number of milliseconds to keep MongoClient available>
기본적으로 이 속성의 값은 5000
입니다.
참고
캐시는 Spark 구성을 사용할 수 있기 전에 설정되므로 시스템 속성을 사용하여 구성해야 합니다.