异常 - java.lang.IllegalArgumentException:在Mahout中找不到标签

时间:2014-04-13 21:56:16

标签: hadoop amazon-ec2 classification mahout

我正在运行以下命令,

/mahout trainnb 
    -i ${WORK_DIR}/20news-train-vectors -el 
    -o ${WORK_DIR}/model 
    -li ${WORK_DIR}/labelindex 
    -ow

./mahout testnb 
    -i ${WORK_DIR}/20news-test-vectors
    -m ${WORK_DIR}/model 
    -l ${WORK_DIR}/labelindex\
    -ow -o ${WORK_DIR}/20news-testing

在运行最后一个命令时,我能够将map任务运行到100%但是在reduce任务中我得到以下错误:

Exception in thread "main" java.lang.IllegalArgumentException: Label not found: 10002
        at com.google.common.base.Preconditions.checkArgument(Preconditions.java:88)
        at org.apache.mahout.classifier.ConfusionMatrix.getCount(ConfusionMatrix.java:182)
        at org.apache.mahout.classifier.ConfusionMatrix.incrementCount(ConfusionMatrix.java:                205)
        at org.apache.mahout.classifier.ConfusionMatrix.incrementCount(ConfusionMatrix.java:                209)
        at org.apache.mahout.classifier.ConfusionMatrix.addInstance(ConfusionMatrix.java:173                )
        at org.apache.mahout.classifier.ResultAnalyzer.addInstance(ResultAnalyzer.java:70)
        at org.apache.mahout.classifier.naivebayes.test.TestNaiveBayesDriver.analyzeResults(                TestNaiveBayesDriver.java:160)
        at org.apache.mahout.classifier.naivebayes.test.TestNaiveBayesDriver.run(TestNaiveBa                yesDriver.java:125)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at org.apache.mahout.classifier.naivebayes.test.TestNaiveBayesDriver.main(TestNaiveB                ayesDriver.java:66)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java                :43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java                :72)
        at org.apache.hadoop.util.ProgramDriver.run(ProgramDriver.java:144)
        at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:152)
        at org.apache.mahout.driver.MahoutDriver.main(MahoutDriver.java:195)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java                :43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

我正在关注http://www.packtpub.com/article/implementing-the-na%C3%AFve-bayes-classifier-in-mahout的示例,并尝试使用labelindex上的seqdumper,并可以看到其中的键和值。

我正在使用Hadoop 2.2,Mahout 1.0并在Amazon EC2上设置整个环境。

请帮帮我。我做错了什么?

2 个答案:

答案 0 :(得分:0)

我认为mahout与你的hadoop版本不兼容,你应该下载hadoop的1.1.0或1.2.0版本。 这可能会解决你的问题。

答案 1 :(得分:0)

我猜你的文件在本地。我也有这个问题,当我将文件更改为HDFS

时我修复了它