[英]Hadoop with mongoDB : NoClassDefFoundError MongoConfigUtil
我正在學習如何使用mongodb數據作為輸入在hadoop中編寫地圖/約簡作業。 所以我遵循了這個示例,但是出現以下錯誤:
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
在編譯時可用,但在運行時不可用。
嘗試使用在classpath中添加的依賴項jar運行應用程序
示例: java -cp mongo-hadoop-core.jar<++other dependencies> MainClass
編輯1
如果您正在使用hadoop
shell運行
通過執行hadoop classpath
檢查classpath
hadoop classpath
,它將在類路徑中打印dir / jars。
如果依賴的jar不在類路徑中,請使用export
命令將其添加到classpath
然后執行hadoop jar yourjar.jar mainClass
編輯2
利用libjars
選項
hadoop jar myjar.jar mainClass -libjars ${LIBJARS}
我可以看到此鏈接示例的文件夾結構是maven。 我不能在該鏈接中看到pom.xml。
我們可以將Maven范圍從provided
為runtime
export HADOOP_CLASSPATH=`hadoop classpath`:`hbase classpath`
hadoop jar .... -cp $HADOOP_CLASSPATH MainClass
如果解壓縮上述的tar文件,則可以引用類路徑,例如:hadoop jar .... .//lib/*主類,其中lib文件夾包含您的所有依賴項,例如mongodb。
另請參閱此答案,他們如何使用libjars
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.