Запуск Mahout из командной строки (CLASSPATH) - PullRequest
3 голосов
/ 26 августа 2010

Успешно выполнил Mahout под Windows, используя Maven.

Я пытаюсь запустить один из примеров из командной строки, и я не понимаю, что я делаю неправильно. Похоже, проблема CLASSPATH.

Допустим, я хочу запустить пример GroupLensRecommenderEvaluatorRunner. Я захожу в папку с файлом GroupLensRecommenderEvaluatorRunner.class и выполняю:

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

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

Это дает мне исключение NoClassDefFoundError для GroupLensRecommenderEvaluatorRunner класс.

Не верен ли путь для -cp?

кстати, для тех, кто не знаком с mahout,

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

- это пакет класса GroupLensRecommenderEvaluatorRunner. Javadoc

спасибо, ребята.

p.s - Прежде чем задать этот вопрос, я сначала посмотрел предыдущие вопросы о стековом потоке в CLASSPATH и следовал приведенным решениям.

Ответы [ 3 ]

1 голос
/ 17 марта 2012

Если вы введете $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/

Скрипт mahout не принимает параметры задания hadoop (например, --libJar) во всех случаях, хотя я надеюсь, что так будет и в будущем, особенно если параметром задания является имя класса (например, seq2sparse).

Что мне нужно было сделать, это скопировать мой пользовательский jar в $HADOOP_HOME/lib на главном узле. Очевидно, что символическая ссылка не работает, похоже, вам нужно скопировать каждый jar-файл, который вы хотите, в каталог.

Тогда не забудьте остановиться и запустить hadoop, потому что, как говорится в справочнике cloudera, он упаковывает библиотеки при запуске.

1 голос
/ 26 августа 2010

Это лучше спросить на user@mahout.apache.org.

В вашем classpath отсутствует скомпилированный код в модуле примеров Mahout, где и живет этот класс.

Еще лучше, посмотрите это прохождение: https://cwiki.apache.org/confluence/display/MAHOUT/Recommender+Documentation

0 голосов
/ 12 сентября 2013

Что я сделал, так это установил HADOOP_CLASSPATH с моим jar и всеми файлами jh mahout как показано ниже.

export HADOOP_CLASSPATH = / home / xxx / my.jar: / opt / cloudera / parcels / CDH-4.3.0-1.cdh4.3.0.p0.22 / Библиотека / махает / махает-ядро-0,7-cdh4.3.0.jar: /opt/cloudera/parcels/CDH-4.3.0-1.cdh4.3.0.p0.22 / Библиотека / махает / махает-ядро-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.баночка: /opt/cloudera/parcels/CDH-4.3.0-1.cdh4.3.0.p0.22/lib/mahout/mahout-integration-0.7-cdh4.3.0.jar: / Opt / Cloudera / посылки / 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

Таким образом, вы должны включить все свои банки и банку с mahout в HADOOP_CLASSPATH, а затем вы можете просто запустить свой класс с помощью

hadoop <classname>

...