[HADOOP] 왜 hadoop이 내 Map 클래스를 인식하지 못합니까?
HADOOP왜 hadoop이 내 Map 클래스를 인식하지 못합니까?
hadoop 2.2.0에서 PDFWordCount map-reduce 프로그램을 실행하려고하는데이 오류가 발생합니다.
13/12/25 23:37:26 INFO mapreduce.Job: Task Id : attempt_1388041362368_0003_m_000009_2, Status : FAILED
Error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class PDFWordCount$MyMap not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1720)
at org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:721)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:339)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:162)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:157)
Caused by: java.lang.ClassNotFoundException: Class PDFWordCount$MyMap not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1626)
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1718)
... 8 more
내지도 클래스를 알 수 없다고합니다. 나는 3 개의 VM에 namenod와 2 개의 datanode가있는 클러스터를 가지고있다.
내 주요 기능은 다음과 같습니다.
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
@SuppressWarnings("deprecation")
Job job = new Job(conf, "wordcount");
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
job.setMapperClass(MyMap.class);
job.setReducerClass(MyReduce.class);
job.setInputFormatClass(PDFInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
job.setJarByClass(PDFWordCount.class);
job.waitForCompletion(true);
}
이 명령을 사용하여 항아리를 실행할 경우 :
yarn jar myjar.jar PDFWordCount /in /out
그것은 출력 경로로 걸리며 job.setJarByClass (PDFWordCount.class); 당신이 위에서 보는 것처럼 내 주요 기능.
필자는이 주요 기능과 똑같은 주요 기능을 가진 간단한 WordCount 프로젝트를 실행했으며이를 실행하기 위해 원사 병 wc.jar MyWordCount / in2 / out2를 사용했으며 완벽하게 실행됩니다.
나는 무엇이 문제인지 이해할 수 없다!
업데이트 : 나는이 프로젝트에서 필자가 성공적으로 사용한 프로젝트로 이동하려고 시도했다. 패키지를 만들고 pdfwordcount 프로젝트의 관련 파일을이 패키지에 복사하고 프로젝트를 내 보냈습니다. (내 메인은 PDFInputFormat을 사용하도록 변경되지 않았으므로 새로운 패키지로 이동하는 것 외에는 아무것도하지 않았습니다.) 작동하지 않았습니다. 다른 프로젝트에서 파일을 삭제했지만 작동하지 않았습니다. 자바 파일을 기본 패키지로 옮겼지만 작동하지 않았습니다!
뭐가 문제 야?!
해결법
-
==============================
1.실제로 문제가 무엇인지 이해할 수는 없지만이 문제를 극복 할 방법을 찾았습니다.
실제로 문제가 무엇인지 이해할 수는 없지만이 문제를 극복 할 방법을 찾았습니다.
Eclipse에서 Java 프로젝트를 jar 파일로 내보내려는 경우 두 가지 옵션이 있습니다.
나는 그 차이점이 무엇인지 정확히 알지 못한다. 두 번째 옵션을 선택하는 데 사용했지만 첫 번째 옵션을 선택하면이 명령을 사용하여 작업을 실행할 수 있습니다.
yarn jar pdf.jar /in /out
from https://stackoverflow.com/questions/20781120/why-hadoop-does-not-recognize-my-map-class by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hive 쿼리의 시간적 조인 (시간적으로 근접한 이벤트) (0) | 2019.06.29 |
---|---|
[HADOOP] Hive / Hadoop의 고유 한 키 생성 (0) | 2019.06.29 |
[HADOOP] 하둡 2와 함께 Oozie, 작업은 "RUNNING" (0) | 2019.06.29 |
[HADOOP] Hive에서 데이터베이스의 모든 테이블 정의를 얻는 방법? (0) | 2019.06.29 |
[HADOOP] java.lang.VerifyError with Hadoop (0) | 2019.06.29 |