Can';t使用SSL和.pem配置将Spark和Scala 2.11连接到MongoDB

Can';t使用SSL和.pem配置将Spark和Scala 2.11连接到MongoDB,mongodb,scala,apache-spark,Mongodb,Scala,Apache Spark,我在从scala&spark应用程序连接到Mongodb时遇到了一个问题,尽管我在C#上成功了 My C# code: var url = "mongodb://user:pass@servername:27017/admin?ssl=true"; var clientSettings = MongoClientSettings.FromUrl(new MongoUrl(url)); var byte

我在从scala&spark应用程序连接到Mongodb时遇到了一个问题,尽管我在C#上成功了

            My C# code:
            var url = "mongodb://user:pass@servername:27017/admin?ssl=true";
            var clientSettings = MongoClientSettings.FromUrl(new MongoUrl(url));
            var bytes = Convert.FromBase64String("MIID5TCCAs2gAwIBAgIJANoGBQADggEBAHaIdU9ri.....");
            var cert = new X509Certificate2(bytes);
            clientSettings.SslSettings = new SslSettings
            {
                ClientCertificates = new[] { cert },
                CheckCertificateRevocation = false
            };

            clientSettings.UseSsl = true;
            clientSettings.VerifySslCertificate = false;
            var client = new MongoClient(clientSettings);
            database = client.GetDatabase("databasename");
我搜索了office mongodb驱动器文档,但每个版本都有很大的不同,而且都不对。请您提供有关Scala 2.11和Spark 2.3的建议?我的mongodb产品是使用.pem文件配置的

多谢各位! Trinh

Spark MongoDB的SSL配置没有很好的文档记录。 本质上,您需要将信任库和密钥库配置添加到驱动程序和执行器配置中,请参阅

因此,您需要将该配置添加到spark submit命令中,例如:
--conf“spark.executor.extraJavaOptions=-Djavax.net.ssl.trustStore=path_to_trustStore-Djavax.net.ssl.trustStorePassword=trustPassword-Djavax.net.ssl.keyStore=path_to_keyStore-Djavax.net.ssl.keystrepassword=keyPassword”

您需要将
crt
(可能是
.pem
的第一部分)添加到密钥库中,如:

keytool-alias mongodb-importcert-trustcacerts-file mongodb.crt-keystore path\u to\u keystore-storepass keyPassword


如果您找到更好的解决方案,请告诉我

谢谢Tom的支持。我正在尝试连接像IDEA这样的开发工具。您是否有任何文档可以帮助连接IntelliJ IDEA?只需将它们添加到VM选项中(不带
spark.executor.extraJavaOptions=