1

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 が組み込まれていると思いましたが、それについては何も見つかりません。

ここでの解決策は何ですか?

ありがとう。

4

2 に答える 2

0

あなたの問題はまさにあなたの言うことです:「私は RecommenderJob を私の瓶に入れていませんでした。」これらのクラスを JAR に入れなければ、もちろん見つかりません。EMR にこれが組み込まれているのはなぜですか? まず、Mahout の「.job」ファイル クラスを JAR に追加します。

于 2012-07-29T11:37:43.497 に答える