错误: IncompatibleClassChangeError
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)
之前玩mahout的时候,使用的是官方提供mahout0.9版本,他的编译时依赖于hadoop1去编译的,我的环境是hadoop2.2,这就出问题了
在hadoop1里面org.apache.hadoop.mapreduce.JobContext这个类是个类,但在hadoop2这个是个接口,所以会报这个错误,不仅在mahout里会出现,hive也会出现
解决办法:
去官方下载源码,然后用maven从新编译,编译的时候指定hadoop的版本