hadoop外部jar

abithluo  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(359)

我正在尝试在服务器上运行hadoop作业。版本是 0.20.2 .
我有很多jar,我在跑:

hadoop jar GenData.jar -libjars /path/jar1,path/jar2,...

即使相应的类在jar中,我也会得到下面的错误:
线程“main”java.lang.noclassdeffounderror中出现异常:org/apache/avro/mapreduce/avrokeyinputformat at at generateTrainingData.main(generateTrainingData)。java:256)在sun.reflect.nativemethodaccessorimpl.invoke0(本机方法)在sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl)。java:57)在sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl。java:43)在java.lang.reflect.method.invoke(方法。java:606)在org.apache.hadoop.util.runjar.main(runjar。java:197)原因:java.lang.classnotfoundexception:org.apache.avro.mapreduce.avrokeyinputformat at at java.net.urlclassloader$1.run(urlclassloader)。java:366)在java.net.urlclassloader$1.run(urlclassloader。java:355)位于java.net.urlclassloader.findclass(urlclassloader)的java.security.accesscontroller.doprivileged(本机方法)。java:354)在java.lang.classloader.loadclass(classloader。java:425)在java.lang.classloader.loadclass(classloader。java:358)

vs3odd8k

vs3odd8k1#

你失踪了 avro-mapred 附属国。

zaq34kh6

zaq34kh62#

看起来您从hadoop客户端得到了这个异常,mapreduce驱动程序代码在客户端jvm中执行。在hadoop中,libjars是一个通用选项,用于将依赖jar添加到mapper/reducer中。在向客户机集添加jar的情况下,可以在执行hadoop命令之前设置以下环境变量。

export HADOOP_CLASSPATH=<PATH_to_jar>/Jar1:<PATH_to_jar>/Jar2;

(冒号“:”可用于指定多个jar,在您的情况下,可以添加包含类的jar org.apache.avro.mapreduce.AvroKeyInputFormat ).
新编辑
首先,您需要找到包含类的jar org.apache.avro.mapreduce.AvroKeyInputFormat . 您可以在jar中找到类 avro-mapred*.jar (获取的兼容版本) avro-mapred-version.jar 从internet)使用上述命令在类路径中包含相同的内容。

相关问题