Amazon 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 を使用します。
ジョブフローを実行すると、エラーログにこれが表示されます -
スレッド「メイン」の例外 java.lang.NoClassDefFoundError: org/apache/mahout/cf/taste/hadoop/item/RecommenderJob at main.TrackRecommander.main(TrackRecommander.java:136) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native) Method) で 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.security.AccessController.doPrivileged(Native Method) で (URLClassLoader.java:202) を実行し、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 には mahout jar が組み込まれていると思いましたが、それについては何も見つかりません。
ここでの解決策は何ですか?
ありがとう。