mapreduce代码在eclipse上工作,但不在集群上工作

llycmphe  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(429)

我正在编写使用opennlp的代码。我的代码在eclipse上运行得非常好,但是当我在集群上运行它的jar时,会出现以下错误:

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
a14dhokn

a14dhokn1#

您需要在任务的类路径中提供opennlp jar。有几种选择: -libjars 和hadoop\u类路径,请参阅将libjars选项用于hadoop
“fatjar”:构建一个包含所有必需jar的jar,然后提交fatjar
在所有节点上安装第三方jar(即使集群具有“第三方意识”)
使用hdfs分布式缓存并在代码中下载必要的jar
有关更详细的讨论,请参见如何:在mapreduce作业中包含第三方库

相关问题