从命令行运行Mahout(CLASSPATH)
使用Maven在Windows下成功编译了Mahout。
我试图从命令行运行其中一个示例,但我不知道我做错了什么。 看起来像CLASSPATH问题。
假设我想运行GroupLensRecommenderEvaluatorRunner示例。 我转到包含GroupLensRecommenderEvaluatorRunner.class文件的文件夹并执行:
java -cp C:/mahout/core/target/classes;. org.apache.mahout.cf.taste.example.grouplens.GroupLensRecommenderEvaluatorRunner
它为GroupLensRecommenderEvaluatorRunner类提供了NoClassDefFoundErrorexception。
-cp的路径是错误的吗?
顺便说一句,对于那些不熟悉mahout的人,
org.apache.mahout.cf.taste.example.grouplens
是GroupLensRecommenderEvaluatorRunner类的包。 的javadoc
多谢你们。
ps – 在问这个问题之前,我首先查看了之前关于CLASSPATH的stackoverflow问题并遵循了给定的解决方案。
最好在user@mahout.apache.org上询问。
您的类路径缺少Mahout示例模块中的编译代码,这是该类所在的位置。
更好的是,看一下这个演练: https : //cwiki.apache.org/confluence/display/MAHOUT/Recommender+Documentation
如果把$MAHOUT_HOME/examples/target/classes
放在java CLASSPATH
(如Sean所提到的那样),那么在本地运行时这将起作用,但你可能不得不尝试下面的方法来进行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引用说它在启动时打包了libs。
我做的是用我的jar和所有mahout jar文件设置HADOOP_CLASSPATH,如下所示。
export 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公司/包裹/ CDH -4.3.0-1.cdh4.3.0.p0.22 / LIB /象夫/亨利马乌-例子-0.7-cdh4.3.0.jar:/opt/cloudera/parcels/CDH-4.3.0-1.cdh4.3.0。 P0.22 / LIB /象夫/亨利马乌-例子-0.7-cdh4.3.0-job.jar:/opt/cloudera/parcels/CDH-4.3.0-1.cdh4.3.0.p0.22/lib/mahout/mahout – 整合 – 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
然后我就能运行hadoop com.mycompany.mahout.CSVtoVector iris / nb / iris1.csv iris / nb / data / iris.seq
因此,您必须在HADOOP_CLASSPATH中包含所有jar子和mahout jar,然后您可以运行您的类
hadoop
- 仅在当前项目的Java类路径中列出项目
- 从命令行运行包中的java
- Weblogic 10.3.1.0正在使用com.bea.core.apache.commons.net_1.0.0.0_1-4-1.jar …我想从我的代码中使用commons-net-2.0.jar
- 我收到“java.lang.ClassNotFoundException:com.google.gson.Gson”错误,即使它是在我的类路径中定义的
- 无法在以感叹号结尾的目录中打开资源(!)
- Netbeans:需要在classpath中包含第三方目录
- 创建包含其他库文件的JAR文件
- Java Manifest.mf类路径问题
- java编译器如何查找类文件而classpath未设置为jdk路径?