最新版本mahout 0.9仅基于hadoop 1.x构建。 (mvn clean install) 如何为hadoop 2.0.x编译mahout?
因为当我运行命令时:
hadoop jar mahout-examples-0.9-SNAPSHOT-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -s SIMILARITY_COOCCURENCE -i test -o result
我总是收到错误消息
IncompatibleClassChangeError:找到接口org.apache.hadoop.mapreduce.JobContext,但是预期了类。
谢谢!
答案 0 :(得分:1)
编译Mahout以使用2.x,因为它不会在与Hadoop 2.x兼容的软件包中发布:
mvn clean install -Dhadoop2 -Dhadoop2.version=2.2.0 -DskipTests=true
如果要在构建之后确认引入了正确的依赖项,请从项目的根目录运行以下命令:
find . -name hadoop*.jar
上述命令生成的工件与0.9版本中的工件不同,因此您需要更新的不仅仅是版本号(似乎有一个新的mahout-mrlegacy jar)。
话虽如此,如果有人能指出我使用2.x运行的官方文物(即使它是快照),我也很感激。
答案 1 :(得分:0)
您是否尝试在pom.xml中更改hadoop的版本?
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version> 0.23.9</version>
(请检查hadoop的版本。据我所知,0.23变为2.0)
另一件事是直接运行RecommenderJob:
bin/mahout recommenditembased \
--input INPUT --output OUTPUT \
--tempDir TEMP --similarityClassname SIMILARITY_LOGLIKELIHOOD
要运行此项,您必须位于mahout文件夹的根目录中,并且需要设置以下环境变量:
export HADOOP_HOME=/path/to/hadoop/home
export HADOOP_COMMONS_HOME=/path/to/commons/home
export JAVA_HOME=/path/to/java/home
export PATH="$PATH:$HADOOP_HOME/bin"
答案 2 :(得分:0)
大约一小时前,Mahout正式在主分支上添加了对Hadoop 2.x的支持(参见MAHOUT-1329)
在此处查看代码https://github.com/apache/mahout并使用以下方法重新编译:
mvn clean package -Dhadoop2.version=2.2.0
试试看是否有效。