hduser@ubuntu:~/Desktop$ hadoop jar wc.jar /usr/local/hadoop/input/sample.txt /usr/local/hadoop/output
Warning: $HADOOP_HOME is deprecated.
Exception in thread "main" java.lang.ClassNotFoundException: /usr/local/hadoop/input/sample/txt
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:274)
at org.apache.hadoop.util.RunJar.main(RunJar.java:153)尝试使用java1.7和Hadoop1.2.1运行wordcount程序。
发布于 2015-02-20 14:58:59
您告诉hadoop您的主要类是“/usr/local/hadoop/ You /sample.txt”
jar
Runs a jar file. Users can bundle their Map Reduce code in a jar file and execute it using this command.
Usage: hadoop jar <jar> [mainClass] args... 您需要在java代码中使用它来设置jar类名。
job.setJarByClass(WordCount.class);发布于 2015-03-19 13:44:44
job.setJarByClass(WordCount.class);
正如赫克托提到的那样,这个问题没有得到解决。这只是一个模糊的猜测。我还是得到了最初的症状。请在发帖前测试答案!
参见以下评论:Hadoop query regarding setJarByClass method of Job class
我会在这里粘贴引用链接,以防有一天它消失:
嗨,这个电话,
job.setJarByClass
告诉Hadoop要使用哪个jar。但是我们也告诉Hadoop在命令行上使用哪个jar,
hadoop jar您的-jar参数
为什么两个地方都需要这个?
谢谢,
标记
答:命令行中的jar可能仅仅是提交map- node作业的jar,而不是jar包含将被传输到不同节点的Mapper和Reducer。
您的jar真正所做的是设置类路径和其他相关环境,并在您的jar中运行主要方法。您可能在类路径中有一个不同的map-还原-jar,其中包含用于完成任务的真正的映射器和还原器。
最美好的祝愿,徐斯坦利
https://stackoverflow.com/questions/28628635
复制相似问题