即使将库添加到 hadoop 文件夹后也找不到 BSONFileInputFormat
BSONFileInputFormat not found even after adding libs to hadoop folder
我正在使用 crcmnky 的存储库处理电影推荐工作。 https://github.com/crcsmnky/mongodb-spark-demo
我编译了 mongo-hadoop 和 mongo-java-driver 并存储了 jars:mongo-hadoop-core-1.3.2-SNAPSHOT 和 mongo-java-driver-2.13.3.jar 在 $HADOOP_HOME/lib 文件夹中。
完成所有这些之后,我根据 README 文件中的给定说明构建了项目并 运行 它。
我收到错误:
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.run(URLClassLoader.java:372)
at java.net.URLClassLoader.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)
可能出了什么问题?我正确地遵循了所有说明。
我遇到了完全相同的问题,宙斯之子带我永远解决了。试试这个:
找到您的 mongo-hadoop-core-1.4.1-SNAPSHOT.jar 和 mongo-java-driver-2.12.3.jar
将它们添加到您的 --master 和应用程序 jar 位置“之前”的 spark-submit 命令中的 --jars。这是关键的一步。如果您在这两个之后提到 --jars,那么您将出于某种疯狂的原因不断收到 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]
我正在使用 crcmnky 的存储库处理电影推荐工作。 https://github.com/crcsmnky/mongodb-spark-demo 我编译了 mongo-hadoop 和 mongo-java-driver 并存储了 jars:mongo-hadoop-core-1.3.2-SNAPSHOT 和 mongo-java-driver-2.13.3.jar 在 $HADOOP_HOME/lib 文件夹中。 完成所有这些之后,我根据 README 文件中的给定说明构建了项目并 运行 它。 我收到错误:
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.run(URLClassLoader.java:372)
at java.net.URLClassLoader.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)
可能出了什么问题?我正确地遵循了所有说明。
我遇到了完全相同的问题,宙斯之子带我永远解决了。试试这个:
找到您的 mongo-hadoop-core-1.4.1-SNAPSHOT.jar 和 mongo-java-driver-2.12.3.jar
将它们添加到您的 --master 和应用程序 jar 位置“之前”的 spark-submit 命令中的 --jars。这是关键的一步。如果您在这两个之后提到 --jars,那么您将出于某种疯狂的原因不断收到 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]