无法在Mahout.0.13中添加类:org.apache.mahout.classifier.df.mapreduce.BuildForest

时间:2017-08-02 21:14:58

标签: hadoop mahout

1)当我运行此随机森林示例时

$MAHOUT_HOME/bin/mahout org.apache.mahout.classifier.df.mapreduce.BuildForest -Dmapred.max.split.size=1874231 -d inputMahoutExamples/RandomForest/rfsplit/trainingSet/* -ds inputMahoutExamples/RandomForest/glass.info -sl 5 -p -t 10 -o inputMahoutExamples/RandomForest/rfmodel

我收到了这个错误

MAHOUT_LOCAL is not set; adding HADOOP_CONF_DIR to classpath.
Running on hadoop, using /usr/local/hadoop-2.7.2/bin/hadoop and HADOOP_CONF_DIR=/usr/local/hadoop-2.7.2/etc/hadoop
MAHOUT-JOB: /usr/local/mahout/examples/target/mahout-examples-0.13.0-job.jar
17/08/02 16:55:29 WARN MahoutDriver: Unable to add class: org.apache.mahout.classifier.df.mapreduce.BuildForest
java.lang.ClassNotFoundException: org.apache.mahout.classifier.df.mapreduce.BuildForest
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at org.apache.mahout.driver.MahoutDriver.addClass(MahoutDriver.java:237)
    at org.apache.mahout.driver.MahoutDriver.main(MahoutDriver.java:128)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:6

2)我正在使用Mahout-0.13和hadoop -2.7.2

3 个答案:

答案 0 :(得分:0)

 $HADOOP_HOME/bin/hadoop jar $MAHOUT_HOME/examples/target/mahout-examples-0.13.0-job.jar org.apache.mahout.classifier.df.mapreduce.BuildForest -d inputMahoutExamples/RandomForest/rfsplit/trainingSet/* -ds inputMahoutExamples/RandomForest/glass.info -sl 5 -p -t 100 -o inputMahoutExamples/RandomForest/rfmodel

我也得到同样的错误

Exception in thread "main" java.lang.ClassNotFoundException: org.apache.mahout.classifier.df.mapreduce.BuildForest
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:214)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

我认为这个问题只与Mahout-0.13有关。 你觉得怎么样?

答案 1 :(得分:0)

我面临着同样的问题。 我认为他们在最后一个版本中没有包含随机森林分类器(不确定)。 它没有在文档中显示。甚至他们的文档网站仍处于测试阶段。 他们提到了两个新的分类器:

org.apache.mahout.classifier.df.mapreduce.inmem     
  

随机决策森林的内存中mapreduce实现

org.apache.mahout.classifier.df.mapreduce.partial   
  

随机决策森林的部分数据mapreduce实施

为了运行该命令,我必须下载并加载版本0.11.0的Mahout。但是,我现在很困惑。为什么我应该使用它并信任输出,而它被开发人员放弃了? 在之前的版本中,他们提到了一些与算法无关的错误,但更多的是管理性能:

  

目前,培训不支持多个输入文件。输入   数据集必须是一个文件(此支持将随附   即将发布的)。对新数据进行分类确实支持多重   输入文件。树构建在每个mapper.close()方法完成   叫做。因为映射器不刷新它们的状态,所以工作可以   当数据集很大并且您尝试构建大量数据集时失败   树。

虽然有用。

答案 2 :(得分:0)

我也遇到了这个问题。我认为该问题发生在最新版本中,因为Here中的CLI驱动程序分类中未包含随机森林。我已经通过在早期版本的mahout上运行(即mahout 0.9。