我已閱讀Using the libjars option with Hadoop和Hadoop: Implementing the Tool interface for MapReduce driver,並且我已經按照博客執行了我的工作。如何讓Hadoop將jar部署到集羣?
我的地圖功能,減少在斯卡拉實施,並且效果很好,如果我收拾的Scala庫到使用Proguard的我的罐子。現在我想分開scala-library以便進一步減少我的jar大小。
我分開的Scala庫後,我跑這個命令:
HADOOP_ROOT_LOGGER=ALL,console hadoop jar /path/to/my.jar com.scala.mapreduce.Main -files /hdfs/path/to/scala-library.jar -libjars /hdfs/path/to/scala-library.jar /path/to/input /path/to/output
- 我不知道我是否需要-files選項
- 我試圖改變路徑格式,包括
file:///...
,OS特定格式,HDFS格式
我表示Hadoop的錯誤不能找到的Scala庫:
Exception in thread "main" java.lang.NoClassDefFoundError: scala/collection/immutable/StringOps ...
第二行意味着我應該包含所有必需的類路徑,而不僅僅是我自己的jar的類路徑,是嗎?...爲什麼文檔不會說 – davidshen84 2015-02-07 13:23:39
您可能不需要包含所有的環境罐在libjars中...但這樣寫腳本更簡單,並且沒有任何傷害。如果更簡單,您可以將jar包括在libjars中並將其附加到HADOOP_CLASSPATH。我稍後可能會優化它。 – 2015-02-08 08:10:47