[英]Not able to run Wordcount JAR file
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)
嘗試使用java 1.7和hadoop 1.2.1運行wordcount程序。
你告訴hadoop你的主要類是“/usr/local/hadoop/input/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);
您沒有遵循正確的語法。
hadoop jar
假設主類名是“WordCount”並且wc.jar位於您的PWD中:
hadoop jar wc.jar Wordcount /usr/local/hadoop/input/sample.txt / usr / local / hadoop / output
job.setJarByClass(WordCount.class);
如赫克托耳所提到的並沒有解決問題。 這只是一個模糊的猜測。 我仍然得到原始症狀。 請在發布前測試答案!
請參閱此注釋: 關於Job類的setJarByClass方法的Hadoop查詢
我會在這里粘貼引用的鏈接,以防它有一天消失:
嗨,這個電話,
job.setJarByClass
告訴Hadoop使用哪個jar。 但是我們也告訴Hadoop在命令行上使用哪個jar,
hadoop jar你的jar參數
為什么我們兩個地方都需要這個?
謝謝,
答案:命令行中的jar可能只是提交map-reduce作業的jar,而不是jar包含將被轉移到不同節點的Mapper和Reducer。
你的jar真正做過的hadoop jar是設置類路徑和其他相關環境,並在你的jar中運行main方法。 您可能在類路徑中有一個不同的map-reduce-jar,其中包含用於完成工作的真實映射器和reducer。
祝福,Stanley Xu
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.