我在java中制作了3个文件,制作了一个jar文件并编写了这一行来执行MapReduce代码:
hadoop jar /home/xyz/Documents/hadoop-2.7.3/abc1.jar woq.WordCount /test/vocab.txt /test/output3
jar文件名是 abc1.jar , woq 是包名称, WordCount 是定义作业的主要类mapreduce code.When执行此行时,会显示以下错误:
Exception in thread "main" java.lang.ClassNotFoundException: woq.WordCount
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.hadoop.util.RunJar.run(RunJar.java:214)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
对于我在执行上述行时遗漏的内容有任何建议吗?
输出grep命令(在注释中):
Sun Jan 22 21:04:20 IST 2017 WordCountMapper.class
Sun Jan 22 21:04:20 IST 2017 WordCountReducer.class
Sun Jan 22 21:04:20 IST 2017 WordCount.class
答案 0 :(得分:2)
来自评论,
类文件中的行package woq;
似乎没有acutal目录结构。您可以创建父目录woq
或从文件中删除该行并重新编译它。
如果删除该行,则可以像这样提交作业
hadoop jar /home/xyz/Documents/hadoop-2.7.3/abc1.jar WordCount /test/vocab.txt /test/output3