一、问题情况
检查表的时候
sql语句:
select * from table;
显示为
但是执行
sql语句:
select count(*) from table;
显示为
二、解决方案
2.1 方法一
后面加上限制1条可以正常查询。
select count(*) from table limit 1;
2.2 方法二
执行下语句后,正常查询可以正常显示。
set hive.compute.query.using.stats=fasle;
以上设置原理为
hive.compute.query.using.stats=true
Instructs Hive to use statistics when generating query plans
三、造成原因
这是hive中的一个优化参数导致的,对于一些使用频率可能很高的sql会进行查询优化,会将这个参数[hive.compute.query.using.stats]设置为true(默认是false),这样的话,Hive在执行某些查询时,例如select count(1),只利用元数据存储中保存的状态信息返回结果,从而提高了响应速度
网友评论