2010-08-26 90 views
3

使用Maven在Windows下成功執行Mahout。從命令行運行Mahout(CLASSPATH)

我想從命令行運行其中一個例子,但我不明白我做錯了什麼。看起來像一個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

謝謝你們。

p.s - 在問這個問題之前,我首先查看了之前關於CLASSPATH的stackoverflow問題,並遵循給定的解決方案。

回答

1

最好在[email protected]上提問。

您的類路徑在Mahout的示例模塊中缺少編譯代碼,這是此類所在的地方。

更妙的是,看看這個演練:https://cwiki.apache.org/confluence/display/MAHOUT/Recommender+Documentation

+1

由於運行類爲你的答案。 我在這個鏈接中沒有看到任何類路徑解釋。 我確實指定了文件夾「examples \ target \ classes \ org \ apache \ mahout \ cf \ taste \ example \ grouplens」。示例模塊中的任何其他類文件? 但它仍然給出同樣的事情 - 只抱怨GroupLensRecommenderEvaluatorRunner ,而不是其他的東西,它無法找到它的類文件。 我會繼續玩它,如果沒有任何作品,我會將問題發佈到用戶列表。 再次感謝... – user431336 2010-08-26 13:54:06

1

如果你把$MAHOUT_HOME/examples/target/classes是Java CLASSPATH(肖恩提到)在本地運行時,這將工作,但你可能要嘗試以下方法爲hadoop集羣部署。

我發現以下文章非常關注如何在mahout/hadoop的各種配置中獲得正確的類。

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

象夫腳本不接受在所有情況下的Hadoop作業參數(如--libJar),雖然我希望它在未來,尤其是在工作參數是一個類名(seq2sparse例如)。

我必須做的是將我的自定義jar複製到主節點上的$HADOOP_HOME/lib。很明顯一個符號鏈接不起作用,看來你必須複製你想要的每個jar到目錄。

然後不要忘記停止並啓動hadoop,因爲cloudera引用說它在啓動時打包庫。

+0

這通常是真實的Pat雖然有問題的代碼實際上不是Hadoop相關的。 – 2012-10-26 06:30:33

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。罐子:/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公司/包裹/ CDH-4.3.0-1.cdh4.3.0.p0.22/lib目錄/象夫/亨利馬烏集成-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

所以,你必須包括所有的罐子,並在HADOOP_CLASSPATH象夫罐子,然後你可以只是

hadoop <classname>