[HADOOP] “ADD JAR”을 사용하여 jar 파일을 추가하더라도 Hive 쉘에서 쿼리를 실행하는 동안 Filenotfound 예외가 발생 함
HADOOP“ADD JAR”을 사용하여 jar 파일을 추가하더라도 Hive 쉘에서 쿼리를 실행하는 동안 Filenotfound 예외가 발생 함
1) "ADD JAR /home/hduser/softwares/hive/hive-serdes-1.0-SNAPSHOT.jar;"을 사용하여 serde jar 파일을 추가했습니다.
2) 테이블 생성
3) 테이블이 성공적으로 작성되었습니다
4) 그러나 선택 쿼리를 실행하면 파일을 찾을 수 없습니다 예외가 발생합니다.
hive> select count(*) from tab_tweets;
Query ID = hduser_20150604145353_51b4def4-11fb-4638-acac-77301c1c1806
Total jobs = 1
Launching Job 1 out of 1
Number of reduce tasks determined at compile time: 1
In order to change the average load for a reducer (in bytes):
set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
set mapreduce.job.reduces=<number>
java.io.FileNotFoundException: File does not exist: hdfs://node1:9000/home/hduser/softwares/hive/hive-serdes-1.0-SNAPSHOT.jar
at org.apache.hadoop.hdfs.DistributedFileSystem$18.doCall(DistributedFileSystem.java:1122)
at org.apache.hadoop.hdfs.DistributedFileSystem$18.doCall(DistributedFileSystem.java:1114)
at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1114)
at org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.getFileStatus(ClientDistributedCacheManager.java:288)
at org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.getFileStatus(ClientDistributedCacheManager.java:224)
at org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.determineTimestamps(ClientDistributedCacheManager.java:99)
at org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.determineTimestampsAndCacheVisibilities(ClientDistributedCacheManager.java:57)
at org.apache.hadoop.mapreduce.JobSubmitter.copyAndConfigureFiles(JobSubmitter.java:269)
at org.apache.hadoop.mapreduce.JobSubmitter.copyAndConfigureFiles(JobSubmitter.java:390)
at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:483)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1296)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1293)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:1293)
at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:562)
at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:557)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:557)
at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:548)
at org.apache.hadoop.hive.ql.exec.mr.ExecDriver.execute(ExecDriver.java:428)
at org.apache.hadoop.hive.ql.exec.mr.MapRedTask.execute(MapRedTask.java:137)
at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:160)
at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:88)
at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1638)
at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1397)
at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1183)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1049)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1039)
at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:207)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:159)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:370)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:754)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
'java.io.FileNotFoundException 예외 (파일이 존재하지 않음 : hdfs : // node1 : 9000 / home / hduser / softwares / hive / hive-serdes-1.0-SNAPSHOT.jar)'로 인해 작업 제출이 실패했습니다. 실패 : 실행 오류, org.apache.hadoop.hive.ql.exec.mr.MapRedTask에서 리턴 코드 1
해결법
-
==============================
1.방법 1 : 로컬 파일 시스템에서 HDFS로 hive-serdes-1.0-SNAPSHOT.jar 파일을 복사하십시오.
방법 1 : 로컬 파일 시스템에서 HDFS로 hive-serdes-1.0-SNAPSHOT.jar 파일을 복사하십시오.
hadoop fs -mkdir /home/hduser/softwares/hive/ hadoop fs -put /home/hduser/softwares/hive/hive-serdes-1.0-SNAPSHOT.jar /home/hduser/softwares/hive/
방법 2 : hive-site.xml에서 hive.aux.jars.path의 값을 다음과 같이 변경하십시오.
<property> <name>hive.aux.jars.path</name> <value>file:///home/hduser/softwares/hive/hive-serdes-1.0-SNAPSHOT.jar</value> </property>
방법 3 : hadoop 클래스 경로에 hive-serdes-1.0-SNAPSHOT.jar를 추가하십시오. 즉, hadoop-env.sh에 다음 줄을 추가하십시오.
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/home/hduser/softwares/hive/hive-serdes-1.0-SNAPSHOT.jar
-
==============================
2.jar가 /home/hduser/softwares/hive/hive-serdes-1.0-SNAPSHOT.jar에 있는지 확인하십시오.
jar가 /home/hduser/softwares/hive/hive-serdes-1.0-SNAPSHOT.jar에 있는지 확인하십시오.
-
==============================
3.참고 : hive-serdes-1.0-SNAPSHOT.jar을 hdfs에 복사 할 필요가 없으며 로컬 Fs 자체에 보관하십시오.
참고 : hive-serdes-1.0-SNAPSHOT.jar을 hdfs에 복사 할 필요가 없으며 로컬 Fs 자체에 보관하십시오.
쿼리 실행 시간 Hive는 모든 노드에서 D.C로 사용 가능하도록 관리합니다.
자세한 내용은이 링크를 참조하십시오 : 공식 링크
참고-Hive 리소스 참조
리소스가 세션에 추가되면 Hive 쿼리는 이름 / 맵 / 축소 / 변환 절에서 이름으로 리소스를 참조 할 수 있습니다. 리소스는 전체 Hadoop 클러스터에서 실행시 로컬로 사용 가능합니다. Hive는 Hadoop의 분산 캐시를 사용하여 쿼리 실행 시간에 추가 된 리소스를 클러스터의 모든 컴퓨터에 배포합니다
여러 가지 방법으로 Jar를 추가 할 수 있습니다.
from https://stackoverflow.com/questions/30647741/hive-shell-throws-filenotfound-exception-while-executing-queries-inspite-of-add by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hue / Oozie에서 인식 할 수없는 인수를 유발하는 Sqoop 자유 형식 쿼리 (0) | 2019.08.12 |
---|---|
[HADOOP] Mapreduce 작업이 실행되고 예외가 있습니다. (0) | 2019.08.12 |
[HADOOP] 프로그램에서 스파크 작업 상태를 얻는 방법? (0) | 2019.08.12 |
[HADOOP] MR 입력 분할 정보 (0) | 2019.08.12 |
[HADOOP] 테이블 백분위 수의 임의 샘플을 반환하기 위해 Accumulo 반복자를 작성하는 중입니다. (0) | 2019.08.12 |