[HADOOP] 데이터로드 중 돼지 오류
HADOOP데이터로드 중 돼지 오류
나는 우분투 12.02 32 비트를 사용하고 hadoop2.2.0과 돼지 0.12를 성공적으로 설치했다. Hadoop이 내 시스템에서 제대로 실행됩니다.
그러나이 명령을 실행할 때마다 :
data = load 'atoz.csv' using PigStorage(',') as (aa1:int, bb1:int, cc1:int, dd1:chararray);
dump data;
다음과 같은 오류가 발생합니다.
ERROR org.apache.hadoop.mapreduce.lib.jobcontrol.JobControl - Error whiletrying to run jobs.java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected.
다음은 전체 스택 추적입니다.
> 2014-01-23 10:41:44,998 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher- 1 map-reduce job(s) waiting for submission.
> 2014-01-23 10:41:45,000 [Thread-9] INFO org.apache.hadoop.metrics.jvm.JvmMetrics - Cannot initialize JVM
> Metrics with processName=JobTracker, sessionId= - already initialized
> 2014-01-23 10:41:45,001 [Thread-9] ERROR org.apache.hadoop.mapreduce.lib.jobcontrol.JobControl - Error while
> trying to run jobs.
> java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected
> at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat.setupUdfEnvAndStores(PigOutputFormat.java:225)
> at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat.checkOutputSpecs(PigOutputFormat.java:186)
> at org.apache.hadoop.mapreduce.JobSubmitter.checkSpecs(JobSubmitter.java:456)
> at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:342)
> at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1268)
> at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1265)
> 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.mapreduce.Job.submit(Job.java:1265)
> at org.apache.hadoop.mapreduce.lib.jobcontrol.ControlledJob.submit(ControlledJob.java:335)
> at org.apache.hadoop.mapreduce.lib.jobcontrol.JobControl.run(JobControl.java:240)
> at java.lang.Thread.run(Thread.java:724)
> at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher$1.run(MapReduceLauncher.java:260)
> 2014-01-23 10:41:45,498 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher
> - 0% complete
> 2014-01-23 10:41:45,502 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher
> - job null has failed! Stop running all dependent jobs
> 2014-01-23 10:41:45,503 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher
> - 100% complete
> 2014-01-23 10:41:45,507 [main] ERROR org.apache.pig.tools.pigstats.SimplePigStats - ERROR 2997: Unable to
> recreate exception from backend error: Unexpected System Error
> Occured: java.lang.IncompatibleClassChangeError: Found interface
> org.apache.hadoop.mapreduce.JobContext, but class was expected
> at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat.setupUdfEnvAndStores(PigOutputFormat.java:225)
> at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat.checkOutputSpecs(PigOutputFormat.java:186)
> at org.apache.hadoop.mapreduce.JobSubmitter.checkSpecs(JobSubmitter.java:456)
> at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:342)
> at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1268)
> at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1265)
> 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.mapreduce.Job.submit(Job.java:1265)
> at org.apache.hadoop.mapreduce.lib.jobcontrol.ControlledJob.submit(ControlledJob.java:335)
> at org.apache.hadoop.mapreduce.lib.jobcontrol.JobControl.run(JobControl.java:240)
> at java.lang.Thread.run(Thread.java:724)
> at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher$1.run(MapReduceLauncher.java:260)
2014-01-23 10:41:45,507 [main] ERROR org.apache.pig.tools.pigstats.PigStatsUtil - 1 map reduce job(s)
> failed!
> 2014-01-23 10:41:45,507 [main] INFO org.apache.pig.tools.pigstats.SimplePigStats - Detected Local mode.
> Stats reported below may be incomplete
> 2014-01-23 10:41:45,508 [main] INFO org.apache.pig.tools.pigstats.SimplePigStats - Script Statistics:
HadoopVersion PigVersion UserId StartedAt FinishedAt Features
> 2.2.0 0.10.1 hardik 2014-01-23 10:41:44 2014-01-23 10:41:45 UNKNOWN
Failed!
Failed Jobs:
JobId Alias Feature Message Outputs
N/A aatoz MAP_ONLY Message: Unexpected System Error Occured: java.lang.IncompatibleClassChangeError: Found interface
> org.apache.hadoop.mapreduce.JobContext, but class was expected
> at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat.setupUdfEnvAndStores(PigOutputFormat.java:225)
> at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat.checkOutputSpecs(PigOutputFormat.java:186)
> at org.apache.hadoop.mapreduce.JobSubmitter.checkSpecs(JobSubmitter.java:456)
> at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:342)
> at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1268)
> at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1265)
> 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.mapreduce.Job.submit(Job.java:1265)
> at org.apache.hadoop.mapreduce.lib.jobcontrol.ControlledJob.submit(ControlledJob.java:335)
> at org.apache.hadoop.mapreduce.lib.jobcontrol.JobControl.run(JobControl.java:240)
> at java.lang.Thread.run(Thread.java:724)
> at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher$1.run(MapReduceLauncher.java:260)
> file:/tmp/temp1979716161/tmp-189979005,
Input(s):
Failed to read data from "file:///home/hardik/pig10/bin/input/atoz.csv"
Output(s):
Failed to produce result in "file:/tmp/temp1979716161/tmp-189979005"
Job DAG:
null
2014-01-23 10:41:45,509 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher
Failed! 2014-01-23 10:41:45,510 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1066: Unable to open iterator
> for alias aatoz
> Details at logfile: /home/hardik/pig10/bin/pig_1390453192689.log
> </i>
해결법
-
==============================
1.Apache Pig 0.12.0은 기본적으로 Hadoop의 이전 버전을 기대합니다. Hadoop 2.2.0 용 Pig를 다시 컴파일하고 두 개의 jar를 새로운 pig-0.12.1-SNAPSHOT.jar 및 pig-0.12.1-SNAPSHOT-withouthadoop.jar로 바꿔야합니다.
Apache Pig 0.12.0은 기본적으로 Hadoop의 이전 버전을 기대합니다. Hadoop 2.2.0 용 Pig를 다시 컴파일하고 두 개의 jar를 새로운 pig-0.12.1-SNAPSHOT.jar 및 pig-0.12.1-SNAPSHOT-withouthadoop.jar로 바꿔야합니다.
다시 컴파일하려면 돼지 아카이브를 풀고 "pig-0.12.0"디렉토리로 이동하여 다음을 실행하십시오.
ant clean jar-all -Dhadoopversion=23
-
==============================
2."ant clean jar-all -Dhadoopversion = 23"명령을 사용하여 빌드하면 프로젝트에서 종속성을 사용하는 것으로 충분하지 않습니다. 로컬 maven repo에 생성 된 jar를 설치하거나 pom.xml에이 종속성 (hadoop2에 대한 "classifier"태그가 있음)을 사용해야합니다.
"ant clean jar-all -Dhadoopversion = 23"명령을 사용하여 빌드하면 프로젝트에서 종속성을 사용하는 것으로 충분하지 않습니다. 로컬 maven repo에 생성 된 jar를 설치하거나 pom.xml에이 종속성 (hadoop2에 대한 "classifier"태그가 있음)을 사용해야합니다.
<dependency> <groupId>org.apache.pig</groupId> <artifactId>pig</artifactId> <classifier>h2</classifier> <version>0.13.0</version> </dependency>
-
==============================
3.나는 다른 방식으로 그것을 해결했다. 내 돼지 스크립트가 Maven을 사용하여 컴파일 된 내 Java 프로젝트에서 UDF를 호출 할 때 CDH4.4 & Pig 0.11.0에서 같은 문제가 발생합니다. /usr/lib/pig/conf/build.properties 파일을 방문했습니다. hadoop-core, hadoop-common, hadoop-mapreduce 속성에 대해 언급 된 버전을 확인했습니다. 동일한 버전의 모든 이슈가 내 Java 프로젝트의 POM.xml 파일에 종속성으로 포함되었는지 확인하십시오. (Infact hadoop-mapreduce는 http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/4.2.0/CDH4-Installation-Guide/cdh4ig_topic_31.html에 따라 6 개의 이슈 ID를 가지고 있습니다. 의존리스트에 그것들 모두 포함). 이러한 POM 설정을 사용하여 프로젝트의 jar 파일을 빌드 한 후 돼지 스크립트는 아무 문제없이 UDF를 호출 할 수있었습니다.
나는 다른 방식으로 그것을 해결했다. 내 돼지 스크립트가 Maven을 사용하여 컴파일 된 내 Java 프로젝트에서 UDF를 호출 할 때 CDH4.4 & Pig 0.11.0에서 같은 문제가 발생합니다. /usr/lib/pig/conf/build.properties 파일을 방문했습니다. hadoop-core, hadoop-common, hadoop-mapreduce 속성에 대해 언급 된 버전을 확인했습니다. 동일한 버전의 모든 이슈가 내 Java 프로젝트의 POM.xml 파일에 종속성으로 포함되었는지 확인하십시오. (Infact hadoop-mapreduce는 http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/4.2.0/CDH4-Installation-Guide/cdh4ig_topic_31.html에 따라 6 개의 이슈 ID를 가지고 있습니다. 의존리스트에 그것들 모두 포함). 이러한 POM 설정을 사용하여 프로젝트의 jar 파일을 빌드 한 후 돼지 스크립트는 아무 문제없이 UDF를 호출 할 수있었습니다.
-
==============================
4.이것은 당신의 단서입니다. 오류 org.apache.hadoop.mapreduce.lib.jobcontrol.JobControl - 작업을 실행하는 동안 오류가 발생했습니다. java.lang.IncompatibleClassChangeError : 인터페이스 org.apache.hadoop.mapreduce.JobContext를 찾았지만 클래스가 필요합니다. "jobcontrol"인터페이스가 특정 클래스를 찾고 있는데 찾지 못했습니다.
이것은 당신의 단서입니다. 오류 org.apache.hadoop.mapreduce.lib.jobcontrol.JobControl - 작업을 실행하는 동안 오류가 발생했습니다. java.lang.IncompatibleClassChangeError : 인터페이스 org.apache.hadoop.mapreduce.JobContext를 찾았지만 클래스가 필요합니다. "jobcontrol"인터페이스가 특정 클래스를 찾고 있는데 찾지 못했습니다.
-
==============================
5.Hadoop 2x에서 내 UDF로 스크립트를 실행하려고하면 같은 예외가 발생했습니다.
Hadoop 2x에서 내 UDF로 스크립트를 실행하려고하면 같은 예외가 발생했습니다.
최신 릴리스 0.14 및 현재 트렁크 0.15에서 ant target jar-all이 누락되었습니다. 따라서 소스를 기반으로 구축하는 경우
또는
ant jar -Dhadoopversion=23
Maven Central에서 호환되는 버전을 다운로드하기 만하면됩니다.
제 경우에는 pig-0.14.0-h2.jar이었습니다.
-
==============================
6.이 문제는 2.2 이상의 모든 hadoop 버전에서도 발생합니다. 더 쉬운 방법은 돼지 버전 0.15를 설치하는 것입니다. 그들은이 버전에서이 문제를 해결했습니다.
이 문제는 2.2 이상의 모든 hadoop 버전에서도 발생합니다. 더 쉬운 방법은 돼지 버전 0.15를 설치하는 것입니다. 그들은이 버전에서이 문제를 해결했습니다.
from https://stackoverflow.com/questions/21300612/error-in-pig-while-loading-data by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 기록중인 파일에 액세스 중 (0) | 2019.06.14 |
---|---|
[HADOOP] Hadoop Map 텍스트 파일 읽기 줄이기 (0) | 2019.06.14 |
[HADOOP] 하둡의 매퍼 입력 키 - 값 쌍 (0) | 2019.06.14 |
[HADOOP] 권한이 거부되어 "hadoop fs -mkdir"이 실패하는 이유는 무엇입니까? (0) | 2019.06.14 |
[HADOOP] 새로운 Hadoop API의 identityreducer (0) | 2019.06.14 |