我正在尝试在服务器上运行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)
2条答案
按热度按时间vs3odd8k1#
你失踪了
avro-mapred
附属国。zaq34kh62#
看起来您从hadoop客户端得到了这个异常,mapreduce驱动程序代码在客户端jvm中执行。在hadoop中,libjars是一个通用选项,用于将依赖jar添加到mapper/reducer中。在向客户机集添加jar的情况下,可以在执行hadoop命令之前设置以下环境变量。
(冒号“:”可用于指定多个jar,在您的情况下,可以添加包含类的jar
org.apache.avro.mapreduce.AvroKeyInputFormat
).新编辑
首先,您需要找到包含类的jar
org.apache.avro.mapreduce.AvroKeyInputFormat
. 您可以在jar中找到类avro-mapred*.jar
(获取的兼容版本)avro-mapred-version.jar
从internet)使用上述命令在类路径中包含相同的内容。