4

最新リリースの mahout 0.9 は、hadoop 1.x 上にのみ構築されています。(mvn クリーン インストール) 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 テスト -o 結果

私はいつもエラーメッセージを受け取りました

IncompatibleClassChangeError: インターフェース org.apache.hadoop.mapreduce.JobContext が見つかりましたが、クラスが予期されていました。

ありがとう!

4

3 に答える 3

1

Mahout は Hadoop 2.x と互換性のあるパッケージでリリースされていないため、2.x で動作するように Mahout をコンパイルするには:

mvn clean install -Dhadoop2 -Dhadoop2.version=2.2.0 -DskipTests=true

正しい依存関係が取り込まれたことをビルド後に確認したい場合は、プロジェクトのルートから次を実行します。

find . -name hadoop*.jar

上記のコマンドで生成されたアーティファクトは 0.9 リリースのものとは異なるため、バージョン番号以外にも更新する必要があります (新しい mahout-mrlegacy jar があるようです)。

そうは言っても、誰かが 2.x で動作する公式のアーティファクトを教えてくれれば (たとえそれが SNAPSHOT であっても)、感謝します。

于 2014-07-14T20:23:47.073 に答える
0

pom.xml で hadoop のバージョンを変更してみましたか?

<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>                                                   
<version> 0.23.9</version> 

(hadoop のバージョンを確認してください。0.23 が 2.0 になっていることがわかりました)

もう 1 つ試すことは、次のように 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"
于 2013-09-12T18:55:00.260 に答える