2010-08-26 6 views
3

Exécution correcte de Mahout sous Windows en utilisant Maven. J'essaie d'exécuter un des exemples de la ligne de commande et je ne comprends pas ce que je fais mal. Cela ressemble à un problème CLASSPATH.Exécution de Mahout à partir de la ligne de commande (CLASSPATH)

Supposons que je souhaite exécuter l'exemple GroupLensRecommenderEvaluatorRunner. Je vais dans le dossier avec le fichier GroupLensRecommenderEvaluatorRunner.class dans et Execute:

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

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

Il me donne l'exception NoClassDefFoundError pour la classe GroupLensRecommenderEvaluatorRunner .

Le chemin de -cp est-il incorrect?

BTW, pour ceux qui ne sont pas familiers avec cornac,

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

est le paquet de la classe GroupLensRecommenderEvaluatorRunner. javadoc

merci les gars.

p.s - J'ai d'abord regardé les précédentes questions de stackoverflow sur CLASSPATH et j'ai suivi les solutions données, avant de poser cette question.

Répondre

1

Il vaut mieux le demander à [email protected]

Votre chemin de classe n'a pas de code compilé dans le module d'exemples de Mahout, où réside cette classe.

Mieux encore, un coup d'oeil à cette visite virtuelle: https://cwiki.apache.org/confluence/display/MAHOUT/Recommender+Documentation

+1

Merci pour ta réponse. Je ne vois aucune explication de classpath dans ce lien. Je spécifie le dossier "examples \ target \ classes \ org \ apache \ mahout \ cf \ taste \ example \ grouplens". Tous les autres fichiers de classe dans le module d'exemples? Mais il donne toujours la même chose - se plaindre sur GroupLensRecommenderEvaluatorRunner seulement, pas sur quelque chose d'autre qu'il ne peut pas trouver son fichier de classe. Je vais continuer à jouer avec et si rien ne fonctionne je posterai la question à la liste des utilisateurs. merci encore ... – user431336

1

Si vous mettez $MAHOUT_HOME/examples/target/classes est dans la java CLASSPATH (comme Sean mentionne) cela va fonctionner lors de l'exécution au niveau local, mais vous aurez probablement essayer la méthode ci-dessous pour un déploiement de cluster hadoop.

J'ai trouvé le post suivant très éclairant sur comment obtenir les bonnes classes dans diverses configurations de mahout/hadoop.

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

Le script cornac n'accepte pas les paramètres d'emploi Hadoop (comme --libJar) dans tous les cas, bien que je l'espère fait dans l'avenir, surtout si un paramètre à l'emploi est un nom de classe (seq2sparse par exemple).

Ce que je devais faire était de copier mon pot personnalisé dans $HADOOP_HOME/lib sur le nœud maître. Évidemment, un lien symbolique ne fonctionne pas, il semble que vous deviez copier chaque pot que vous voulez dans le répertoire. Ensuite, n'oubliez pas d'arrêter et de démarrer hadoop, car la référence de cloudera dit qu'il empaquette les libs au démarrage.

+0

C'est généralement vrai Pat bien que le bit de code en question ne soit pas lié à Hadoop. –

0

Ce que j'ai fait est de définir le HADOOP_CLASSPATH avec mon pot et tous les fichiers jar mahout comme indiqué ci-dessous.

exportation 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-dh4.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/colis/CDH-4.3.0-1.cdh4.3.0.p0.22/lib/mahout/mahout-intégration-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

Ensuite, j'étais capable de lancer hadoop com.mycompany.mahout.CSVtoVector iris/nb/iris1.csv iris/nb/data /iris.seq

vous devez inclure tous vos pots et le pot de cornac dans le HADOOP_CLASSPATH et vous pouvez simplement lancer votre classe avec

hadoop <classname>

Questions connexes