尝试从Mongo DB读取数据时遇到问题。

我有Spark 1.6.3和Scala 2.10.5

我正在使用Mongo DB Connector版本1.1和程序包2.10

以下是我在Mavan中使用的依赖项

<dependency>
<groupId>org.mongodb.spark</groupId>
<artifactId>mongo-spark-connector_2.10</artifactId>
<version>1.1.0</version>
</dependency>


出现类似的错误

java.lang.NoClassDefFoundError: com/mongodb/spark/rdd/api/java/JavaMongoRDD
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at org.apache.spark.util.Utils$.classForName(Utils.scala:175)
        at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:708)
        at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)
        at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.ClassNotFoundException: com.mongodb.spark.rdd.api.java.JavaMongoRDD
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)


但是能够找到参考中存在的类

提前致谢

最佳答案

将mongo-spark-connector_2.10的jar添加到运行时类路径

可以按照以下方式来完成,


将mongo-spark-connector jar添加到Spark lib文件夹
spark-submit--jars=/path/mongo-spark-connector.jar
spark.driver.extraClassPath或别名--driver-class-path,用于在运行驱动程序的节点上设置额外的类路径。
spark.executor.extraClassPath可以在Worker节点上设置额外的类路径。


如果添加驱动程序类路径,则将需要添加执行程序类路径,以使jar可用于工作程序节点上的执行程序

尝试使用应具有该类的最新版本jar 2.2.8
mongo-spark-connector_2.10:2.2.8

10-04 22:24
查看更多