9

我在 HiveQL 中执行条件查询时遇到问题。基本select * from tablename语句工作正常。错误是:

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 和 Hive shell 都试过了。输出是一样的。请帮忙!

4

6 回答 6

7

这应该可以解决您的问题,因为此属性将true默认设置为。

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

hive.auto.convert.join.noconditionaltask- Hive 是否开启了根据输入文件大小将 common join 转换为 mapjoin 的优化。

如果此参数打开,并且 n-way 连接的 n-1 个表/分区的大小之和小于指定大小,则连接直接转换为 mapjoin(没有条件任务)。

于 2017-09-28T09:01:39.053 回答
3

在大多数情况下,此错误是由权限问题引起的,其中运行该命令的 Hive 用户没有对 /user/hive 的访问权限

您需要检查 Hadoop Hive 集群的配置

于 2013-09-30T14:59:05.573 回答
1

我注意到在使用 Hive2 时,您需要更改在使用 HiveQL 时指定减速器数量的方式。在 Hive1 上,我使用过:

SET mapred.reduce.tasks=1

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

SET mapreduce.job.reduces=1

我有同样的错误信息,改变它为我解决了这个问题。

于 2016-06-16T00:07:33.737 回答
0

对我来说,这是由于没有设置队列。

set mapred.job.queue.name=xxxx;
set mapreduce.job.reduces=1;

设置这两个参数对我有用。

于 2019-11-14T06:54:55.163 回答
0

这对我有用:

SET hive.auto.convert.join=false;

默认情况下,Hive 将简单连接转换为尝试将输入表加载到内存的映射连接。此选项将禁用将输入表加载到内存。

于 2021-10-18T12:53:35.837 回答
0

我有一个使用 VirtualBox 安装的 cloudera 快速入门映像。我必须执行以下操作才能解决此问题

sudo vi /etc/hive/conf/hive-site.xml 并将 hive.auto.convert.join 属性设置为 false(您需要 root 才能编辑,因此需要 sudo)。

我在 hive-site.xml.xml 中没有 hive.auto.convert.join.noconditionaltask 属性。

于 2017-12-15T13:31:33.630 回答