Mahout學習之執行canopy演算法錯誤及解決辦法

Thinkgamer_gyt發表於2015-10-11

一:將Text轉換成Vector序列檔案時

 在Hadoop中執行編譯打包好的jar程式,可能會報下面的錯誤:

  1. Exception in thread "main" java.lang.NoClassDefFoundError:  
  2. org/apache/mahout/common/AbstractJob 
書中和網上給的解決辦法都是:把Mahout根目錄下的相應的jar包複製到Hadoop根目錄下的lib資料夾下,同時重啟Hadoop

但是到了小編這裡不管怎麼嘗試,都不能解決,最終放棄了打包成jar執行的念頭,就在對原始碼進行了修改,在eclipse執行了

二:java.lang.Exception: java.lang.ClassCastException: org.apache.hadoop.io.IntWritable cannot be cast to org.apache.hadoop.io.Text

此種錯誤,是由於map和reduce端函式格式輸入輸出不一致,導致資料型別不匹配

在次要注意一個特別容易出錯的地方:Mapper和Reducer類中的函式必須是map和reduce,名字不能改,因為是繼承Mapper類和Reducer類,如果函式名字改變了的話也可能造成以上的錯誤,或者Reducer端不輸出

三:當在命令列裡直接用命令轉化檔案格式時丟擲如下錯誤:

ERROR common.AbstractJob: Unexpected --seqFileDir while processing Job-Specific Options

注:轉化命令為:bin/mahout clusterdump --seqFileDir /home/thinkgamer/document/canopy/output/clusters-0-final/ --pointsDir /home/thinkgamer/document/canopy/output/clusteredPoints/ --output /home/thinkgamer/document/canopy/clusteranalyze.txt

上網搜了搜熱心的網友給出的解決辦法是:將--seqFileDir換成--input即可

相關文章