尝试从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