Запись в mongoDB от Spark - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь записать в MongoDB из spark, для пробного использования я запускаю оболочку spark 2 (версия Spark = 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"))

Но это приводит к следующей ошибке.По сути, я хочу сохранить содержимое dataframe в MongoDB.enter image description here

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

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 это происходит потому, что вы пытаетесь импортировать ииспользовать драйвер Java MongoDB v3.2.2.Соединитель Spark v2.1.1 зависит от драйвера MongoDB Java v3.4.2.Смотрите также mongo-spark v2.1.1 Dependencies.scala .

Вместо указания банок вручную можно использовать --packages, чтобы указать MongoDB Spark Connector .Таким образом, зависимости будут автоматически выбраны.Например, чтобы использовать соединитель MongoDB Spark версии 2.1.1:

./bin/spark-shell --packages org.mongodb.spark:mongo-spark-connector_2.11:2.1.1

При этом автоматически будет получен драйвер Java MongoDB , совместимый с соединителем.

Вы должны увидеть вывод, подобный приведенному ниже:

:: 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]

Для получения дополнительной информации см. Также Руководство по Scala-соединителю MongoDB Spark

0 голосов
/ 29 мая 2018

добавьте import org.bson.Document и, если это не работает, опубликуйте определения зависимостей maven или sbt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...