用mahout跑第一個協同過濾算法的程序

萬事開頭難,上午看了一下基於物品的協同過濾的算法的原理,於是下午決定練練手。

本以爲按照書上的命令來敲會很順利,然而好事多磨,花了大半個下午才搞好。

剛開始就發現我看得書上的命令有問題,真是坑,又找了另一本mahout的書來看。

先在hdfs下建好相應的文件夾,並把輸入文件傳上去。

然後敲如下一段正確的命令:

hadoop jar /usr/local/mahout-distribution-0.9/mahout-examples-0.9-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -i /test/input/user_item.txt -o /item/output -n 3 -b false -s SIMILARITY_EUCLIDEAN_DISTANCE --maxPrefsPerUser 7 --minPrefsPerUser 2 --maxPrefsPerUser 2


然而敲命令運行之後,還是報錯了,報錯如下:

java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected
	at org.apache.mahout.common.HadoopUtil.getCustomJobName(HadoopUtil.java:174)
	at org.apache.mahout.common.AbstractJob.prepareJob(AbstractJob.java:614)
	at org.apache.mahout.cf.taste.hadoop.preparation.PreparePreferenceMatrixJob.run(PreparePreferenceMatrixJob.java:73)
	at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
上網搜了一下,找到了一篇比較靠譜的博文,發現是mahout下面一個jar包的問題,奈何人家編譯好的jar包是mahout0.9的,所以我只能刪掉原來的0.7,再安裝配置一個0.9的。

然後,把人家編譯好的jar包放到mahout裏面去,再次執行命令,解決了一些小錯誤之後,終於跑出了個結果,也是不容易啊。


參考自下文:

hadoop2.2+mahout0.9實戰

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章