mongodb - 从 Spark 写入 mongoDB
问题描述
我正在尝试从 spark 写入 MongoDB,出于试用目的,我正在启动 spark 2 shell (Spark version=2.1.1.2.6.1.0-129),如下所述:-
spark-shell --jars /bigdata/datalake/mongo-spark-connector_2.11-2.1.1.jar,/bigdata/datalake/mongo-scala-driver_2.11-2.1.0.jar,/bigdata/datalake/mongo-java-driver-3.2.2.jar
并在其中运行以下代码:-
import com.mongodb.spark._
import org.apache.spark.sql.{SaveMode, SparkSession}
spark.conf.set("spark.mongodb.output.uri","mongodb://<IP>:27017/menas.tests")
spark.conf.set("spark.mongodb.output.collection", "tests")
val df = spark.sparkContext.parallelize( 1 to 10).toDF().withColumn("value",col("value").cast("string"))
MongoSpark.save(df.write.option("uri", "mongodb://<IP>:27017/menas.tests").mode("append"))
解决方案
spark-shell --jars /bigdata/datalake/mongo-spark-connector_2.11-2.1.1.jar,/bigdata/datalake/mongo-scala-driver_2.11-2.1.0.jar,/bigdata/datalake/mongo -java-driver-3.2.2.jar
根据错误日志,以及spark-shell
调用方式,这是因为您正在尝试导入和使用 MongoDB Java 驱动程序 v3.2.2。Spark 连接器 v2.1.1 依赖于 MongoDB Java 驱动程序 v3.4.2。另请参阅mongo-spark v2.1.1 Dependencies.scala。
--packages
您可以使用指定MongoDB Spark Connector来代替手动指定 jars 。这样,依赖项将被自动获取。例如,要使用 MongoDB Spark 连接器版本 2.1.1:
./bin/spark-shell --packages org.mongodb.spark:mongo-spark-connector_2.11:2.1.1
这将自动获取与连接器兼容的MongoDB Java 驱动程序。
您应该会看到类似如下的输出:
:: loading settings :: url = jar:file:/home/ubuntu/spark-2.1.2-bin-hadoop2.6/jars/ivy-2.4.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
org.mongodb.spark#mongo-spark-connector_2.11 added as a dependency
:: resolving dependencies :: org.apache.spark#spark-submit-parent;1.0
confs: [default]
found org.mongodb.spark#mongo-spark-connector_2.11;2.1.1 in central
found org.mongodb#mongo-java-driver;3.4.2 in central
downloading https://repo1.maven.org/maven2/org/mongodb/spark/mongo-spark-connector_2.11/2.1.1/mongo-spark-connector_2.11-2.1.1.jar ...
[SUCCESSFUL ] org.mongodb.spark#mongo-spark-connector_2.11;2.1.1!mongo-spark-connector_2.11.jar (1291ms)
downloading https://repo1.maven.org/maven2/org/mongodb/mongo-java-driver/3.4.2/mongo-java-driver-3.4.2.jar ...
[SUCCESSFUL ] org.mongodb#mongo-java-driver;3.4.2!mongo-java-driver.jar (612ms)
:: resolution report :: resolve 4336ms :: artifacts dl 1919ms
:: modules in use:
org.mongodb#mongo-java-driver;3.4.2 from central in [default]
org.mongodb.spark#mongo-spark-connector_2.11;2.1.1 from central in [default]
有关更多信息,另请参阅MongoDB Spark 连接器 Scala 指南
推荐阅读
- php - 如何从 Wordpress 中的特定单页中删除标签?
- python - python - unicode编码冲突
- laravel - Laravel - 检查用户是否在另一台服务器上进行了身份验证
- python - 如何更正包含空格的 DataFrame 标头。
- c# - 在 selenium webdriver 测试 C# 上添加暂停/播放按钮
- javascript - 如何更改脚本以使其适合下拉列表?
- laravel - Laravel:需要动态验证规则(从配置文件或设置中读取)
- reactjs - Grunt-webpack:如何在没有构建服务器访问权限的情况下强制生产模式?
- javascript - 在 webview Android 中打开 url
- apache-spark - Scala Spark:计算分组的 AUC