hive:select*语句有效,但不支持select count(*)

1tu0hz3e  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(916)

我在WindowsServer2008R2上有HDP1.1。
我已将web日志加载到配置单元表。create table语句:

create table logtable (datenonQuery string , hours string, minutes string, seconds string, TimeTaken string, Method string, UriQuery string, ProtocolStatus string) row format serde 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' with serdeproperties( "input.regex" = "(\\S+)\\t(\\d+):(\\d+):(\\d+)\\t(\\S+)\\t(\\S+)\\t(\\S+)\\t(\\S+)", "output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s") stored as textfile;

load语句:

load data local inpath 'D:\Logfiles\' into table logtable;

select语句:

Select * from logtable;

目前一切正常。
以下语句失败:

Select count(*) from logtable;

除此之外:
失败:执行错误,从org.apache.hadoop.hive.ql.exec.mapredtask返回代码2
编辑1:
失败作业表中的诊断信息显示以下信息:
“#个失败的Map任务超出了允许的限制。失败计数:1。上次失败任务:任务\u 201306251711 \u 0010 \u m \u000000'

yvfmudvl

yvfmudvl1#

这与hadoop相关,而不是hive。select工作而select count()不工作的原因是后者涉及mr作业。你的数据量是多少?
尝试通过设置属性来增加Map器堆大小 mapred.job.map.memory.mb 更高的价值。还可以尝试通过降低拆分大小来增加Map器的数量 mapred.min.split.size 看看有没有什么不同。

cnwbcb6i

cnwbcb6i2#

对我来说,这个特殊的错误是一个访问问题。当我使用用户名和密码连接到数据库时,它被解决了

holgip5t

holgip5t3#

如果输出结果集有两个同名的列(可能在hive/impala中),那么count()将不起作用。
e、 g.查询#1将给出结果,而查询#2将给出错误。
解析-别名产品代码列将解析查询2中的错误
1) 选择a.产品代码、b.产品代码、b.产品名称、a.采购日期、a.采购数量来自产品事实a.内部联接产品分帐b on(a.产品代码=b.产品代码)
2) 选择
from(select a.product\u code,b.product\u code,b.product\u name,a.purchase\u date,a.purchase\u qty from product\u fact a inner join product\u dim b on(a.product\u code=b.product\u code))作为c

相关问题