2017-01-23 5 views
1

を実行することができませんが、jarファイルを作り、MapReduceのコードを実行するために、この行を書いた:のHadoop:私はJavaで3つのファイルを作っているの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

リストのようなジョブを送信することができます。 – franklinsijo

+0

それは5つのクラス3を与えます.3つは私がコンパイルしたものと2つの追加ファイルです – ssharma

+0

'WordCount'の出力をgrepできますか? – franklinsijo

答えて

2

コメントから、

クラスファイルはacutalディレクトリ構造なしでそれらにラインpackage woq;を持っているように見えます。親ディレクトリwoqを作成するか、ファイルからその行を削除して再コンパイルすることができます。

あなたが行を削除する場合は、あなたがabc1.jar` -tvf瓶 `を使用してjarファイル内のクラスは、それはあなたのWORDCOUNTクラスのパッケージ階層を与える必要があります。この

hadoop jar /home/xyz/Documents/hadoop-2.7.3/abc1.jar WordCount /test/vocab.txt /test/output3 
+1

パッケージメソッドも実行されました。ありがとうございました。 – ssharma

関連する問題