2017-06-29 48 views
1

我有MyClass.java來定義map-reduce任務。 MyClass.java包含mapper,reducer和main的定義。它工作正常,但如果我嘗試使用/添加外部jar,我有消息ClassNotFoundException。如何將外部庫添加到Hadoop map-reduce任務

編譯我用命令:

javac -classpath hadoop_library_path:my_library_path -sourcepath code_path/ -d class_path/ path/MyClass.java 

我創作的罐子,然後我運行任務:

hadoop jar maclass.jar MyClass input output -target target 

外部罐子需要先還增加了在「罐子的Hadoop 「命令? 我試着用-libjars選項沒有結果。任何想法?

+0

我不知道如何使用命令行(除非你有maven)。一種選擇是使用IDE並生成一個可運行的jar,另一種選擇是使用Maven插件(例如陰影)創建一個超級jar。後者在命令行中沒有IDE就可以正常工作。 – vefthym

+0

我試圖用NetBeans創建一個可運行的jar,但錯誤是一樣的。 – mary

+0

我知道它可以與Eclipse一起工作,但我不知道NetBeans。無論如何我會推薦maven。 – vefthym

回答

0

正如我評論,我看到兩個選項(可能有更多):

  1. 使用Eclipse和生成可運行罐子(我不知道有關NetBeans或的IntelliJ)。

  2. 使用maven及其陰影插件來生成超級罐子。您應該添加用作依賴關係的所有外部庫。

我推薦後一種選擇。

+0

我會試試看。謝謝。 – mary

+0

@mary有沒有這樣的運氣? – vefthym