FAQ
データローカリティを実現するにはどうすればよいですか?
MongoDBは、どのSpark Connector 配置でも、DataFrame または Dataset の優先ロケーションをデータが存在する場所に設定します。
シャーディングされていない システムの場合、優先されるロケーションは、スタンドアロン またはレプリカセットのホスト名に設定されます。
シャーディングされたシステムの場合、シャードのホスト名に優先される場所を設定します。
データローカリティを高めるには、次のアクションを実行することをお勧めします。
シャーディングされていないシステムの場合はホストの 1 つ、シャーディングされたシステムの場合はシャードごとに 1 つの Spark ワーカーがあることを確認します。
nearest
読み込み設定(read preference)mongod
を使用して、ローカル を行います。シャーディングされたクラスターの場合は、同じノードに
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 構成が利用可能になる前に設定されるため、システム プロパティを使用して構成する必要があります。