我试图在http://chimpler.wordpress.com/2013/06/24/using-the-mahout-naive-bayes-classifier-to-automatically-classify-twitter-messages-part-2-distribute-classification-with-hadoop/comment-page-1/#comment-693运行示例,但面临问题,因为看起来我的hadoop无法识别外部库,尤其是mahout,这是运行示例所需要的。
这是我看到的错误消息,我无法修复:
13/09/07 20:59:07 INFO mapred.JobClient: Task Id : attempt_201309071836_0006_m_000000_0, Status : FAILED
Error: java.lang.ClassNotFoundException: org.apache.mahout.math.Vector
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at MapReduceClassifier$ClassifierMap.initClassifier(MapReduceClassifier.java:39)
at MapReduceClassifier$ClassifierMap.setup(MapReduceClassifier.java:31)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:142)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:621)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
at org.apache.hadoop.mapred.Child.main(Child.java:170)
到目前为止,我尝试过的一些事情没有帮助 -
将我的'mahout-distribution-0.7'文件夹中的所有.jars添加到HADOOP_CLASSPATH w.r.t http://mail-archives.apache.org/mod_mbox/mahout-user/201103.mbox/%3C2658E54B540D284981EA57E6A549EA70A3A977EE30@INBLRK77M1MSX.in002.siemens.net%3E
Ran'mvn package'(在'mahout-distribution-0.7'文件夹中),正如Error while clustering data with kmeans上某人完成清理所建议的那样(花了大约一个小时,但最终结果显示'BUILD SUCCESSFUL')
查看How do I build/run this simple Mahout program without getting exceptions?但我看到mathout的数学库已经存在于'mahout-distribution-0.7'文件夹下的pom.xml中。
有一点需要注意的是,最初我的'hadoop jar xxx'命令引发了无法找到MultiSet(com.google.common.collect.Multiset)的错误,我调整了Classifier.java代码以改为使用HashMap MultiSet,所以绕过了那个错误。但现在,查看代码,我需要让hadoop识别Vector类才能成功运行该程序。
有人可以帮助我如何让我的hadoop识别mahout库并修复上述错误?
我正在使用'Hadoop 0.20.2'和'mahout-distribution-0.7'。
提前致谢