我在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'
3条答案
按热度按时间yvfmudvl1#
这与hadoop相关,而不是hive。select工作而select count()不工作的原因是后者涉及mr作业。你的数据量是多少?
尝试通过设置属性来增加Map器堆大小
mapred.job.map.memory.mb
更高的价值。还可以尝试通过降低拆分大小来增加Map器的数量mapred.min.split.size
看看有没有什么不同。cnwbcb6i2#
对我来说,这个特殊的错误是一个访问问题。当我使用用户名和密码连接到数据库时,它被解决了
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