我试图在亚马逊电子病历上运行一个RecommenderJob。我有一个名为SmartJukebox.jar (不可运行的)的jar,它包含一个类main.TrackRecommander (仅此而已)。
我用jar创建了一个作业流:
s3n://smartjukebox/SmartJukebox.jar
和args:
输入s3n://smartjukebox/ratings.csv --输出s3n://smartjukebox/ main.TrackRecommander -usersFiles3n://smartjukebox/user.txt。
类TrackRecommander使用类RecommenderJob。
我运行了作业流程,并在错误日志中得到了这个-
线程"main“中的异常: org/apache/mahout/cf/taste/hadoop/item/RecommenderJob at main.TrackRecommander.main(TrackRecommander.java:136) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native方法) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org。apache.hadoop.util.RunJar.main(RunJar.java:156)由: java.lang.ClassNotFoundException: org.apache.mahout.cf.taste.hadoop.item.RecommenderJob at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method)在java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at java.lang.ClassLoader引起。loadClass(ClassLoader.java:247) .6
现在我看到JVM找不到RecommenderJob,我也没有把RecommenderJob放进我的jar中。我以为EMR会在里面装马赫奥特罐子,但我什么也找不到。
这里的解决方案是什么?
谢谢。
发布于 2012-07-29 11:37:43
你的问题就在于你所说的:“我没有把RecommenderJob放进我的罐子里。”除非你把这些类放在你的罐子里,否则当然找不到。为什么EMR会内置这个呢?首先将Mahout ".job“文件类添加到JAR中。
发布于 2014-03-11 11:50:43
您需要创建一个作业jar,该jar包含运行代码所需的所有类,其中也包括mahout类。看看https://github.com/tdunning/MiA
检查如何使用pom.xml中的maven程序集插件和src/main/ job.xml目录中的job.xml创建作业jar。如果排除hadoop类,那么可以在任何hadoop实例上运行它。
https://stackoverflow.com/questions/11708688
复制相似问题