猿问

HIVE选择计数(*)非空值比选择计数(*)返回更高的值

我目前正在使用Hive进行一些数据探索,无法解释以下行为。说我有一个带有字段master_id的表(名为mytable)。


当我计算行数时,我得到


select count(*) as c from mytable 

c

1129563

如果我要计算具有非null master_id的行数,则会得到一个更高的数字


select count(*) as c from mytable where master_id is not null

c

1134041

此外,master_id似乎永远不会为空。


select count(*) as c from mytable where master_id is null

c

0

我无法解释添加where语句最终如何增加行数。有人有任何暗示来解释这种行为吗?


谢谢


收到一只叮咚
浏览 429回答 1
1回答

阿波罗的战车

由于设置了此参数,很可能您的查询没有在哪里使用统计信息:set hive.compute.query.using.stats=true;尝试将其设置为false并再次执行。或者,您可以在表上计算统计信息。请参阅分析表语法也可以在INSERT OVERWRITE期间自动收集统计信息:set hive.stats.autogather=true;
随时随地看视频慕课网APP
我要回答