3

Maven を使用して、Windows で Mahout を正常にコンパイルしました。

コマンド ラインからサンプルの 1 つを実行しようとしていますが、何が間違っているのかわかりません。CLASSPATH の問題のようです。

GroupLensRecommenderEvaluatorRunner の例を実行したいとしましょう。GroupLensRecommenderEvaluatorRunner.class ファイルが含まれるフォルダーに移動し、次を実行します。

java -cp C:/mahout/core/target/classes;. 

org.apache.mahout.cf.taste.example.grouplens.GroupLensRecommenderEvaluatorRunner

GroupLensRecommenderEvaluatorRunner クラスの NoClassDefFoundError 例外が発生します。

-cp のパスが間違っていますか?

ところで、象使いに慣れていない人のために、

org.apache.mahout.cf.taste.example.grouplens

GroupLensRecommenderEvaluatorRunner クラスのパッケージです。 javadoc

みんなありがとう。

ps - この質問をする前に、最初に CLASSPATH に関する以前のスタックオーバーフローの質問を調べ、指定された解決策に従いました。

4

3 に答える 3

1

これは、user@mahout.apache.orgで尋ねた方がよいでしょう。

このクラスが存在するMahoutのexamplesモジュールに、クラスパスにコンパイル済みコードがありません。

さらに良いことに、このウォークスルーをご覧ください:https ://cwiki.apache.org/confluence/display/MAHOUT/Recommender+Documentation

于 2010-08-26T09:24:31.970 に答える
1

$MAHOUT_HOME/examples/target/classesJava に配置した場合CLASSPATH(Sean が述べているように)、これはローカルで実行しているときに機能しますが、Hadoop クラスターの展開については、おそらく以下の方法を試す必要があります。

mahout/hadoop のさまざまな構成で適切なクラスを取得する方法について、次の投稿が非常にわかりやすいことがわかりました。

http://www.cloudera.com/blog/2011/01/how-to-include-third-party-libraries-in-your-map-reduce-job/

mahout スクリプトはすべての場合で Hadoop ジョブ パラメーター (--libJar など) を受け入れませんが、特にジョブへのパラメーターがクラス名 (たとえば seq2sparse) である場合は、将来的に受け入れられることを願っています。

私がしなければならなかったのは、カスタム jar を$HADOOP_HOME/libマスター ノードにコピーすることでした。明らかに、シンボリック リンクは機能しません。必要な各 jar をディレクトリにコピーする必要があるようです。

次に、hadoop を停止して開始することを忘れないでください。これは、cloudera のリファレンスに記載されているように、起動時にライブラリがパッケージ化されるためです。

于 2012-03-16T22:33:41.233 に答える
0

私がしたことは、以下に示すように、jar とすべての mahout jar ファイルで HADOOP_CLASSPATH を設定することです。

export HADOOP_CLASSPATH=/home/xxx/my.jar:/opt/cloudera/parcels/CDH-4.3.0-1.cdh4.3.0.p0.22/lib/mahout/mahout-core-0.7-cdh4.3.0.jar :/opt/cloudera/parcels/CDH-4.3.0-1.cdh4.3.0.p0.22/lib/mahout/mahout-core-0.7-cdh4.3.0-job.jar:/opt/cloudera/parcels/CDH -4.3.0-1.cdh4.3.0.p0.22/lib/mahout/mahout-examples-0.7-cdh4.3.0.jar:/opt/cloudera/parcels/CDH-4.3.0-1.cdh4.3.0. p0.22/lib/mahout/mahout-examples-0.7-cdh4.3.0-job.jar:/opt/cloudera/parcels/CDH-4.3.0-1.cdh4.3.0.p0.22/lib/mahout/mahout -統合-0.7-cdh4.3.0.jar:/opt/cloudera/parcels/CDH-4.3.0-1.cdh4.3.0.p0.22/lib/mahout/mahout-math-0.7-cdh4.3.0.jar

その後、hadoop com.mycompany.mahout.CSVtoVector iris/nb/iris1.csv iris/nb/data/iris.seq を実行できました

したがって、すべての jar と mahout jar を HADOOP_CLASSPATH に含める必要があり、クラスを実行するだけで済みます。

hadoop <classname>

于 2013-09-12T12:59:50.100 に答える