Java Hadoop与mongoDB:NoClassDefFoundErrorMongoConfigUtil
我正在学习如何使用mongodb数据作为输入在hadoop中编写map/reduce作业。所以我遵循了这个示例,但我得到了以下错误:Java Hadoop与mongoDB:NoClassDefFoundErrorMongoConfigUtil,java,mongodb,hadoop,mapreduce,mongodb-hadoop,Java,Mongodb,Hadoop,Mapreduce,Mongodb Hadoop,我正在学习如何使用mongodb数据作为输入在hadoop中编写map/reduce作业。所以我遵循了这个示例,但我得到了以下错误: Exception in thread "main" java.lang.NoClassDefFoundError: com/mongodb/hadoop/util/MongoConfigUtil at WordCount.main(WordCount.java:58) at sun.reflect.NativeMethodAccessorImp
Exception in thread "main" java.lang.NoClassDefFoundError: com/mongodb/hadoop/util/MongoConfigUtil
at WordCount.main(WordCount.java:58)
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:498)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.ClassNotFoundException: com.mongodb.hadoop.util.MongoConfigUtil
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
我已经找了好几个小时没有结果了。任何人都可以帮助我。这意味着
mongo hadoop core.jar在编译时可用,但在运行时不可用
尝试在类路径中添加依赖项jar的情况下运行应用程序
示例:java-cp mongo-hadoop-core.jar MainClass
编辑1
如果您正在使用hadoop运行
shell
通过执行hadoop类路径检查classpath
,它将打印类路径中的dir/jar
如果依赖jar不在类路径中,请使用export
命令将它们添加到classpath
中,然后执行hadoop jar yourjar.jar mainClass
编辑2
使用libjars
选项
hadoop-jar-myjar.jar mainClass-libjars${libjars}
我可以看到这个链接示例文件夹结构是maven。我在那个链接中看不到pom.xml
我们可以将maven范围从提供的
设置为运行时
您需要编写(将您的应用程序库和相关依赖项打包到tar文件中),并需要将其从pom.xml引用到包mongo-hadoop-core.jar以及集群中未安装的其他依赖项
如果您解压缩上面提到的tar文件,您可以引用类路径,例如:
hadoop jar/lib/*主类
其中lib文件夹包含所有依赖项,比如mongodb
如果mongo db和相关组件安装在集群中,我们可以提到类路径,如下面的示例所示
还可以看到这个答案他们是如何使用的问题是,在hadoop中,我们应该从应用程序中提取jar,并使用“hadoop jar name.jar className”执行它,所以我不知道如何将其他jar包含在其中。您尝试过-libjars选项吗?以pom.xml不可见为例,请参见此。很难理解和回答您在部署时遗漏了什么
export HADOOP_CLASSPATH=`hadoop classpath`:`hbase classpath`
hadoop jar .... -cp $HADOOP_CLASSPATH MainClass