我目前正在使用Hive进行一些数据探索,无法解释以下行为.假设我有一个带有字段master_id的表(名为mytable).
当我计算我得到的行数
select count(*) as c from mytable
c
1129563
Run Code Online (Sandbox Code Playgroud)
如果我想用非null master_id计算行数,我得到一个更高的数字
select count(*) as c from mytable where master_id is not null
c
1134041
Run Code Online (Sandbox Code Playgroud)
此外,master_id似乎永远不会为空.
select count(*) as c from mytable where master_id is null
c
0
Run Code Online (Sandbox Code Playgroud)
我无法解释添加where语句最终会如何增加行数.有没有人有任何提示来解释这种行为?
谢谢
很可能你的查询没有在哪里使用统计信息因为这个参数被设置:
set hive.compute.query.using.stats=true;
Run Code Online (Sandbox Code Playgroud)
尝试将其设置为false并再次执行.
或者,您可以计算表格的统计数据.请参见ANALYZE TABLE SYNTAX
此外,还可以在INSERT OVERWRITE期间自动收集统计信息:
set hive.stats.autogather=true;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1133 次 |
最近记录: |