簡體   English   中英

無法運行Wordcount JAR文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM