mahout 0.9与 hadoop2.x 冲突 解决办法

本文介绍了在使用Mahout 0.9版本进行协同过滤(CF)时遇到的类冲突问题,并提供了一种解决方案,通过调整Mahout的POM文件以适配Hadoop 2.2.0版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在跑mahout的CF时遇到一个类冲突问题,IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected

如下图


查询了下原因,是由于mahout0.9以下依赖的hadoop版本是1.x,和hadoop 2.x 不兼容导致的。

试了很多方法,例如根据官方的解决办法给mahout打patch,根据fansy1990大神的步骤,试了n次,无论是直接用别人的hadoop-core-0.9.jar包还是我自己打的,都没成功;或是升级mahout版本到0.10或0.11,由于对mahout 0.9以上的版本不是很了解,几次尝试都没有成功。


最后使用了这个方法解决了这个问题。


http://blog.youkuaiyun.com/zhouyan8603/article/details/47401661


按照文章内的步骤,重新打包mahout。需要根据hadoop版本更改下mahout pom的配置,我这边hadoop的版本是2.2.0。打完mahout包后,到目录下的core和math目录下的target目录拿到对应的两个jar包,mahout-core-0.9.jar和mahout-math-0.9.jar,覆盖掉您这边工程mahout所在maven仓库的jar包即可。


感谢玉羽凌风大神!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值