当尝试基于网页http://avro.apache.org/docs/1.7.7/mr.html运行MapReduceColorCount(新MapReduce API)时,我得到以下内容:
[cloudera@localhost ~]$ hadoop jar avroColorCount.jar exos.MapReduceColorCount2 inavro01 outavro01
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/avro/mapreduce/AvroKeyInputFormat
at exos.MapReduceColorCount2.run(MapReduceColorCount2.java:71)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
at exos.MapReduceColorCount2.main(MapReduceColorCount2.java:86)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
对于代码的MRv1版本,我得到了AvroMapper的NoClassDefFoundError。 对于我测试的其他Avro程序,我得到了AvroJob的相同错误。
您知道这些错误的根本原因吗? 注意:无法粘贴我的POM文件,显示效果很糟糕,在代码引号之间尝试但是没有用。
答案 0 :(得分:1)
下载avro-mapred-1.7.1.jar
并将其添加到您的类路径中。
答案 1 :(得分:0)
如果您使用maven来构建jar,则需要添加以下依赖项:
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
</dependency>
并制作一个胖子jar以在命令控制台中运行它。