2012-05-18 56 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 

我已經從兩個Eclipse IDE和蜂房殼.The試圖輸出是相同的。請幫忙!

+2

您現在有解決方案嗎?我也面臨同樣的問題。 – learninghuman

+0

您可能會發現這個網絡應用程序有幫助。 http://sql.treasuredata.com –

回答

3

在大多數情況下,這個錯誤是由於權限問題,在運行該命令的蜂房用戶沒有訪問權限/用戶/蜂巢造成

你要檢查的Hadoop配置單元的配置集羣

1

我注意到,使用Hive2時,您需要更改使用HiveQL時指定減速器數量的方式。在Hive1我用:

SET mapred.reduce.tasks=1 

但是在Hive2我注意到我需要使用:

SET mapreduce.job.reduces=1 

我有同樣的錯誤信息,並改變這種解決問題的我。

6

這應該可以解決您的問題,因爲此屬性默認設置爲true

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

hive.auto.convert.join.noconditionaltask - 無論蜂巢使 優化有關轉換常見的連接到基於該 輸入文件大小mapjoin。

如果此paramater接通,並且大小爲n-1個的 表的總和/爲n路分區加入小於指定的大小, 聯接直接轉化爲一個mapjoin(有沒有條件 任務)。

0

我使用VirtualBox安裝了cloudera quickstart映像。我必須執行以下操作來修復問題

sudo vi /etc/hive/conf/hive-site.xml並將hive.auto.convert.join屬性設置爲false(您需要root用於編輯,因此sudo)。

我在hive-site.xml.xml中沒有hive.auto.convert.join.noconditionaltask屬性。

相關問題