我正在尝试在亚马逊 EMR 上运行 RecommenderJob。我有一个名为 SmartJukebox.jar(不可运行)的 jar,它包含一个 main.TrackRecommander 类(仅此而已)。
我用 jar 创建了一个工作流程:
s3n://smartjukebox/SmartJukebox.jar
和参数:
main.TrackRecommander --input s3n://smartjukebox/ratings.csv --output s3n://smartjukebox/output --usersFile s3n://smartjukebox/user.txt。
TrackRecommander 类使用 RecommenderJob 类。
我运行作业流程,我在错误日志中得到了这个 -
在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native方法)在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在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。在 java.net.URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:306) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247) ... 还有 6 个
现在我看到 JVM 找不到 RecommenderJob 并且我没有将 RecommenderJob 放入我的 jar 中。我以为 EMR 会内置 mahout 罐子,但我找不到任何相关信息。
这里的解决方案是什么?
谢谢。