2012-05-18 5 views
8

HiveQL에서 조건부 쿼리를 실행하는 데 문제가 있습니다. 기본 select * from tablename 문이 올바르게 작동합니다. 오류 :실행 오류, org.apache.hadoop.hive.ql.exec.MapRedTask의 리턴 코드 1

Total MapReduce 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 mapred.reduce.tasks=<number> 
java.net.ConnectException: Call to /0.0.0.0:8021 failed on connection exception: java.net.ConnectException: Connection refused 
     at org.apache.hadoop.ipc.Client.wrapException(Client.java:1134) 
     at org.apache.hadoop.ipc.Client.call(Client.java:1110) 
     at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:226) 
     at org.apache.hadoop.mapred.$Proxy5.getProtocolVersion(Unknown Source) 
     at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:398) 
     at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:384) 
     at org.apache.hadoop.mapred.JobClient.createRPCProxy(JobClient.java:501) 
     at org.apache.hadoop.mapred.JobClient.init(JobClient.java:486) 
     at org.apache.hadoop.mapred.JobClient.<init>(JobClient.java:469) 
     at org.apache.hadoop.hive.ql.exec.ExecDriver.execute(ExecDriver.java:655) 
     at org.apache.hadoop.hive.ql.exec.MapRedTask.execute(MapRedTask.java:123) 
     at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:130) 
     at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:57) 
     at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1063) 
     at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:900) 
     at org.apache.hadoop.hive.ql.Driver.run(Driver.java:748) 
     at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:209) 
     at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:286) 
     at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:516) 
     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:186) 
Caused by: java.net.ConnectException: Connection refused 
     at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 
     at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:574) 
     at org.apache.hadoop.net.SocketIOWithTimeout.connect(
.... 
Job Submission failed with exception 'java.net.ConnectException(Call to /0.0.0.0:8021 failed on connection exception: java.net.ConnectException: Connection refused)' 
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MapRedTask 

I 출력은 동일 이클립스 IDE와 하이브 쉘 국지적 모두에서 시도했다. 도와주세요!

대부분의 경우
+2

해결책이 있습니까? 나도 똑같은 문제에 직면 해있다. – learninghuman

+0

이 웹 응용 프로그램이 도움이 될 수 있습니다. http://sql.treasuredata.com –

답변

3

이 오류는 하이브 명령을 실행하는 하이브의 사용자/사용자에게 액세스 권한이없는 권한 문제, /에 의해 발생

당신은 하둡 하이브의 구성을 확인하는 것이 좋습니다

cluster

1

나는 Hive2를 사용하면서 Hive2를 사용할 때 감속기의 수를 지정하는 방법을 변경해야한다는 것을 알아 챘다. Hive1에 나는 사용하고 있습니다 :

SET mapreduce.job.reduces=1 

나는 같은 오류 메시지가 있었고,이 변화하는 나를 위해 문제를 해결 :
SET mapred.reduce.tasks=1 

그러나 Hive2에 내가 사용할 필요가 나타났습니다.

6

기본적으로이 속성은 true으로 설정되므로 문제가 해결됩니다.

set hive.auto.convert.join.noconditionaltask=false 

hive.auto.convert.join.noconditionaltask - 여부 하이브는 일반적인 변환에 대한 최적화를 가능하게는 입력 파일의 크기에 따라 mapjoin에 가입 할 수 있습니다.

이 paramater가이고, n-1 테이블에 대한 크기의 합/A N 방향에 대한 파티션 조인 직접 mapjoin 변환 조인 지정된 크기보다 작 으면

은 (존재 조건부 작업 없음).

0

나는 cloudera quickstart 이미지를 VirtualBox를 사용하여 마운트했습니다. 문제를 해결하려면 다음을 수행해야했습니다.

sudo vi /etc/hive/conf/hive-site.xml 및 hive.auto.convert.join 속성을 false로 설정해야합니다. 따라서 편집하려면 루트를 사용해야하므로 sudo).

hive-site.xml.xml에 hive.auto.convert.join.noconditionaltask 속성이 없습니다.