首页 > 解决方案 > 如何将 documentdb 连接到 emr 实例中的 spark 应用程序

问题描述

在我的 EMR 实例中尝试使用 mongodb 配置 spark 时出现错误。下面是命令——

spark-shell --conf "spark.mongodb.output.uri=mongodb://admin123:Vibhuti21!@docdb-2021-09-18-15-29-54.cluster-c4paykiwnh4d.us-east-1.docdb.amazonaws.com:27017/?replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false" "spark.mongodb.output.collection="ecommerceCluster" --packages org.mongodb.spark:mongo-spark-connector_2.11:2.4.3

我是 Spark 和 AWS 的初学者。有人可以帮忙吗?

标签: apache-sparkamazon-ec2amazon-emraws-documentdbaws-documentdb-mongoapi

解决方案


DocumentDB 需要在您的 spark 执行器将启动的每个节点上安装一个 CA 包。因此,您首先需要在每个实例上安装 CA 证书,AWS 在 JAVA 部分下有一个指南,其中包含两个 bash 脚本,这使事情变得更容易。1

安装这些证书后,您的 spark 命令需要使用可以传递给 Spark 的配置参数来引用信任库及其密码。这是我运行的一个示例,效果很好。

spark-submit 
--packages org.mongodb.spark:mongo-spark-connector_2.11:2.4.3  
--conf "spark.executor.extraJavaOptions=  
-Djavax.net.ssl.trustStore=/tmp/certs/rds-truststore.jks  
-Djavax.net.ssl.trustStorePassword=<yourpassword>"   pytest.py

您也可以在 spark-shell 中提供相同的配置选项。

我确实觉得棘手的一件事是 mongo spark 连接器似乎不知道连接字符串中的 ssl_ca_certs 参数,所以我删除了它以避免来自 Spark 的警告,因为 Spark 执行器无论如何都会在配置中引用密钥库。


推荐阅读