如何编译/使用hadoop2.0的mahout?

xxls0lw8  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(312)

最新版本的mahout 0.9只构建在hadoop1.x上(mvn clean install)如何为hadoop2.0.x编译mahout?
因为当我运行命令时:
hadoop jar mahout-examples-0.9-snapshot-job.jar org.apache.mahout.cf.taste.hadoop.item.recommenderjob-s相似度\u coccurence-i test-o结果
我总是收到错误信息
不兼容ClassChangeError:找到接口org.apache.hadoop.mapreduce.jobcontext,但应为类。
谢谢!

lp0sw83n

lp0sw83n1#

大约一小时前,mahout在主分支上正式添加了对hadoop2.x的支持(参见mahout-1329)
在这里 checkout 代码https://github.com/apache/mahout 并使用以下方法重新编译:

mvn clean package -Dhadoop2.version=2.2.0

试试看这是否管用。

qacovj5a

qacovj5a2#

您是否尝试过在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"
kkih6yb8

kkih6yb83#

要将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的官方工件(即使是快照),我会非常感激。

相关问题