2012-07-29 3 views
1

아마존 EMR에서 RecommenderJob을 실행하려고합니다. SmartJukebox.jar (runnable이 아닌)라는 항아리가 있으며 main.TrackRecommander 클래스가 포함되어 있습니다.EMR의 RecommenderJob

S3N : //smartjukebox/SmartJukebox.jar

및 인수 :

나는 작업 항아리와 흐름을 만들어

을 main.TrackRecommander --input S3N : // smartjukebox/평가 .csv - 출력 s3n : // smartjukebox/출력 --usersFile s3n : //smartjukebox/user.txt.

TrackRecommander 클래스는 RecommenderJob 클래스를 사용합니다.

나는 작업 흐름을 실행하고 난 오류 로그에이를 얻을 -

Exception in thread "main" 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) at 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) Caused by: 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) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) ... 6 more

는 지금은 JVM이 RecommenderJob을 찾을 수 없습니다 그리고 난 내 항아리에 RecommenderJob를 넣지 않은 것을 알 수있다. EMR에 조개 병이 내장되어있을 것이라고 생각했지만 그걸 찾을 수는 없습니다.

여기 해결책은 무엇입니까?

감사합니다.

답변

0

당신이 말하는 것은 정확하게 당신이 말하는 것입니다 : "나는 내 항아리에 RecommenderJob을 넣지 않았다." 클래스를 JAR 파일에 넣지 않는 한, 물론 찾을 수 없습니다. 왜 EMR에 이것이 내장되어 있습니까? Mahout ".job"파일 클래스를 먼저 JAR에 추가하십시오.

+0

무지 때문에 죄송하지만 어디서 찾을 수 있습니까? 아니면 그들이 무엇인지에 대한 단서를 얻을 수 있을까요? 당신이 간단한 설명을 줄 수 있다면 그것은 좋을 것입니다. 도와 주셔서 감사합니다! –

+0

'mvn package'를 배포본의 압축을 푼 디렉토리에 복사하십시오. 그런 다음 원하는 모듈 아래의'target /'을보십시오. –

0

mahout 클래스가 포함 된 코드를 실행하는 데 필요한 모든 클래스가 포함 된 작업 병을 만들어야합니다. 받는다는 조립의 pom.xml에서 플러그인 및 src/main/resources 디렉토리에있는 job.xml를 사용하여 작업 항아리를 만드는 방법을 https://github.com/tdunning/MiA

확인에서 살펴 보자. hadoop 클래스를 제외하면 모든 hadoop 인스턴스에서 실행할 수 있습니다.