您的位置:首页 > 其它

用mahout跑第一个协同过滤算法的程序

2015-04-17 17:38 218 查看
万事开头难,上午看了一下基于物品的协同过滤的算法的原理,于是下午决定练练手。

本以为按照书上的命令来敲会很顺利,然而好事多磨,花了大半个下午才搞好。

刚开始就发现我看得书上的命令有问题,真是坑,又找了另一本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实战
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: