MaxTemperature程式Mapper ClassNotFoundException

來源:互聯網
上載者:User

標籤:

錯誤: 執行hadoop權威指南上MaxTemperature程式出現Mapper類ClassNotFoundException異常:

解決: 將書上的

JobConf job = new JobConf(MaxTemperature.class) ;
改為:
JobConf job = new JobConf() ;job.setJar("/root/hadoop-resources/code/maxtemperature.jar");

下面是我解決過程:

鬱悶一天了,明明照著書(hadoop權威指南)上寫的,但是在執行hadoop MaxTemperature 時總是出現Mapper類找不到。

發現可能是環境變數的問題。於是在/etc/profile中配置hadoop環境變數:

export hadoop_HOME="/usr/hadoop"for f in $hadoop_HOME/hadoop-*.jar; doHADOOP_CLASSPATH=${HADOOP_CLASSPATH}:$fdonefor f in $hadoop_HOME/lib/*.jar;doHADOOP_CLASSPATH=${HADOOP_CLASSPATH}:$fdoneexport HADOOP_CLASSPATH=".$HADOOP_CLASSPATH"

執行,錯誤仍然存在。

然後發現網上說是需要打包,我認為應該不需要打包的,書上都沒有到打包,我用的hadoop版本和他用的是一樣的。但是首先解決問題吧,於是退而求其次。

將產生的class檔案打包為jar:

jar -cvf classes/*.class

然後使用:

hadoop jar maxtemperature.jar Maxtemperature input/sample.txt output

執行命令,發現錯誤依舊。

然後發現網上別人的程式執行就正常了,發現他的jar是放在hadoop安裝目錄的bin下的。於是我充滿疑問的將我的jar複製到bin下,然後執行,好了~~~!!!!

所以這是一種解決方案,將jar複製到hadoop下就可以正常運行了。

但這種方案實在太死板了,最後又在stackoverflow上找到一種方法,書上的範例程式碼寫的是

JobConf job = new JobConf(MaxTemperature.class) ;

改為:

JobConf job = new JobConf() ;job.setJar("/root/hadoop-resources/code/maxtemperature.jar");

然後打包,運行,不算完美的解決~~~~

 

MaxTemperature程式Mapper ClassNotFoundException

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.