[英]how to use external jars in Cloudera hadoop?
我在集群上安裝了cloudera hadoop版本4。 它隨附於Google protobuffer jar版本2.4。 在我的應用程序代碼中,我使用由protobuffer 2.5版編譯的protobuffer類。
這會在運行時導致無法解決的編譯問題。 有沒有一種方法可以使用外部jar來運行map reduce作業,或者在cloudera升級其服務之前我一直處於困境?
謝謝。
是的,您可以使用外部jar運行MR作業。
像下面的示例一樣,提交作業時,請確保將所有依賴項都添加到HADOOP_CLASSPATH
和-libjars
中:
您可以使用以下命令從當前目錄和lib
目錄添加所有jar依賴項:
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:`echo *.jar`:`echo lib/*.jar | sed 's/ /:/g'`
請記住,通過hadoop jar
開始作業時,還需要通過使用-libjars
來傳遞任何依賴項的-libjars
。 我喜歡使用:
hadoop jar <jar> <class> -libjars `echo ./lib/*.jar | sed 's/ /,/g'` [args...]
注意: sed
命令需要使用不同的定界符; 該HADOOP_CLASSPATH
是:
分離, -libjars
需,
分離。
編輯:如果您需要首先解釋類路徑以確保您的jar(而不是預包裝的jar)是被使用的,則可以設置以下內容:
export HADOOP_USER_CLASSPATH_FIRST=true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.