Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Databricks笔记本Scala Spark连接到MongoDB无法初始化类com.MongoDB.Spark.config.ReadConfig$_Java_Mongodb_Scala_Apache Spark_Databricks - Fatal编程技术网

Java Databricks笔记本Scala Spark连接到MongoDB无法初始化类com.MongoDB.Spark.config.ReadConfig$

Java Databricks笔记本Scala Spark连接到MongoDB无法初始化类com.MongoDB.Spark.config.ReadConfig$,java,mongodb,scala,apache-spark,databricks,Java,Mongodb,Scala,Apache Spark,Databricks,我正在使用带有Spark的Databricks Scala笔记本连接到MongoDB,我试图理解为什么在连接到我的MongoDB集群时出现此错误。我只是想能够从数据库中读取我的数据,但我不确定为什么会不断出现这个错误 java.lang.NoClassDefFoundError: Could not initialize class com.mongodb.spark.config.ReadConfig$ 这里显示了我试图从MongoDB读取的代码 import org.apache.log4

我正在使用带有Spark的Databricks Scala笔记本连接到MongoDB,我试图理解为什么在连接到我的MongoDB集群时出现此错误。我只是想能够从数据库中读取我的数据,但我不确定为什么会不断出现这个错误

java.lang.NoClassDefFoundError: Could not initialize class com.mongodb.spark.config.ReadConfig$
这里显示了我试图从MongoDB读取的代码

import org.apache.log4j.{Level, Logger}
import org.apache.spark.ml.evaluation.RegressionEvaluator
import org.apache.spark.ml.recommendation.ALS
import org.apache.spark.ml.tuning.{ParamGridBuilder, TrainValidationSplit}
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}

import com.mongodb.spark.MongoSpark
import com.mongodb.spark.config.{ReadConfig, WriteConfig}
import com.mongodb.spark._
import com.mongodb.spark.config._

val data = spark.read.format("com.mongodb.spark.sql.DefaultSource").option("database", "sample_airbnb").option("collection", "listingsAndReviews").load()
data.show()
我还在我的笔记本库中安装了以下库

org.mongodb.spark:mongo-spark-connector_2.12:2.4.0
mongodb_driver_3_12_3_javadoc.jar
mongodb_driver_3_12_3_javadoc.jar
bson_3_12_3_javadoc.jar
这些是用于spark配置的uri

spark.mongodb.input.uri mongodb+srv://<user>:<password>@cluster0-ofrzm.azure.mongodb.net/test?retryWrites=true&w=majority
spark.mongodb.output.uri mongodb+srv://<user>:<password>@cluster0-ofrzm.azure.mongodb.net/test?retryWrites=true&w=majority
spark.databricks.delta.preview.enabled true
spark.mongodb.input.uri mongodb+srv://:@cluster0 of rzm.azure.mongodb.net/test?retryWrites=true&w=mailty
spark.mongodb.output.uri mongodb+srv://:@cluster0 of rzm.azure.mongodb.net/test?retryWrites=true&w=mailty
spark.databricks.delta.preview.enabled true
非常感谢您的帮助

我在使用pyspark的dataproc上有相同的连接问题 我的解决方案: 安装这些罐子

https://mvnrepository.com/artifact/org.mongodb.spark/mongo-spark-connector_2.11/2.4.0
https://repo1.maven.org/maven2/org/mongodb/bson/
https://repo1.maven.org/maven2/org/mongodb/mongodb-driver/
https://repo1.maven.org/maven2/org/mongodb/mongodb-driver-core/
Pypark:

from pyspark.sql import SparkSession

spark = SparkSession.builder\
                    .master('local')\
                    .config('spark.mongodb.input.uri', 'mongodb://{ Host }:{ Port }/{ DB }.{ Collection }')\
                    .config('spark.mongodb.output.uri', 'mongodb://{ Host }:{ Port }/{ DB }.{ Collection }')\
                    .config('spark.jars.packages', 'org.mongodb.spark:mongo-spark-connector_2.11-2.4.0')\
                    .getOrCreate()

df = spark.read\
          .format("com.mongodb.spark.sql.DefaultSource")\
          .option("database",{ DB })\
          .option("collection", { Collection })\
          .load()

可能存在与此相关的不同问题:

  • 您在使用Scala 2.11的Databricks运行时上使用Scala 2.12编译的连接器-这是最可能的问题,因为使用Scala 2.12的DBR 7.0几乎在2个月后发布。经验法则-对于DBR<7.0,使用名为
    \u 2.11
    的工件2.4.x,对于DBR>=7.0,使用该库的
    \u 2.12
    和版本3.0.0
  • 您没有下载所有依赖项。连接器依赖于许多其他需要可用的库。最好将库指定为Maven坐标:
    org.mongodb.spark:mongo-spark-connector_2.11-2.4.0
    -这将提取所有必要的依赖项