我在使用crcmnky的存储库进行电影推荐工作。https://github.com/crcsmnky/mongodb-spark-demo 我已经编译了mongohadoop和mongojava驱动程序,并将jar:mongo-hadoop-core-1.3.2-snapshot和mongo-java-driver-2.13.3.jar存储在$hadoop\u home/lib文件夹中。完成所有这些之后,我构建了这个项目,并按照自述文件中给出的说明运行它。我得到一个错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/mongodb/hadoop/BSONFileInputFormat
at com.mongodb.spark.demo.Recommender.main(Recommender.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.ClassNotFoundException: com.mongodb.hadoop.BSONFileInputFormat
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
可能出了什么问题?我正确地遵循了所有的指示。
1条答案
按热度按时间hc8w905p1#
我也遇到了同样的问题,宙斯的儿子花了我一辈子的时间来解决。试试这个:
找到mongo-hadoop-core-1.4.1-snapshot.jar和mongo-java-driver-2.12.3.jar
将它们添加到您的--master和应用程序jar位置的--jarsinspark submit命令“before”中。这是关键的一步。如果您在这两个之后提到--jar,那么出于某些疯狂的原因,您将一直得到bsonfileinputformat异常。所以你的spark submit命令-
./bin/spark submit--class“com.mongodb.spark.demo.recommender”--jars/home/killshot/downloads/mongo-hadoop/core/build/libs/mongo-hadoop-core-1.4.1-snapshot.jar,/home/killshot/downloads/mongo-hadoop/work/mongodb-spark-demo/target/lib/mongo-java-driver-2.12.3.jar--master local[4]