2014-04-04 59 views
1

我正在使用openNLP的代碼。我的代碼在Eclipse上運行完美,但是當我在集羣上運行的罐子,我得到以下錯誤:mapreduce代碼在eclipse上工作,但不在集羣上

Exception in thread "main" java.lang.NoClassDefFoundError: opennlp/tools/util/ObjectStream 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:270) 
at org.apache.hadoop.util.RunJar.main(RunJar.java:153) 
Caused by: java.lang.ClassNotFoundException: opennlp.tools.util.ObjectStream 
at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:323) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:268) 
... 3 more 

回答

2

你需要有OpenNLP罐子可以和你的任務,你的classpath。有幾個選項:

  • -libjars和HADOOP_CLASSPATH,看到Using the libjars option with Hadoop
  • 「胖罐子」:建立一個包含所有必要的罐子罐子,提交脂肪罐子代替
  • 在所有安裝第三方罐子節點(即,使集羣「第三方知道」)
  • 使用HDFS distributed cache並下載必要的罐子在你的代碼

對於更長discussi上看到How-to: Include Third-Party Libraries in Your MapReduce Job

+0

您可以使用Maven樹蔭把OpenNLP罐子中的「胖罐子」這個帖子顯示燈罩的例子 http://stackoverflow.com/questions/22096909/create-runable-jar-with -maven-3-1-使用-行家依賴性-插件-dosnt創建-RU/22097164#22097164 – markg

相關問題