一芹血、問(wèn)題情況
檢查表的時(shí)候
sql語(yǔ)句:
select * from table;
顯示為
但是執(zhí)行
sql語(yǔ)句:
select count(*) from table;
顯示為
二、解決方案
2.1 方法一
后面加上限制1條可以正常查詢(xún)。
select count(*) from table limit 1;
2.2 方法二
執(zhí)行下語(yǔ)句后幔烛,正常查詢(xún)可以正常顯示啃擦。
set hive.compute.query.using.stats=fasle;
以上設(shè)置原理為
hive.compute.query.using.stats=true
Instructs Hive to use statistics when generating query plans
三、造成原因
這是hive中的一個(gè)優(yōu)化參數(shù)導(dǎo)致的饿悬,對(duì)于一些使用頻率可能很高的sql會(huì)進(jìn)行查詢(xún)優(yōu)化令蛉,會(huì)將這個(gè)參數(shù)[hive.compute.query.using.stats]設(shè)置為true(默認(rèn)是false),這樣的話狡恬,Hive在執(zhí)行某些查詢(xún)時(shí)珠叔,例如select count(1),只利用元數(shù)據(jù)存儲(chǔ)中保存的狀態(tài)信息返回結(jié)果弟劲,從而提高了響應(yīng)速度