1,背景
使用datax增量同步数据后,发现执行count还是原来的数据量
select count(id) from test.bd_channelday;
我又执行了以下语句,发现数据量明明已经改变,id是主键唯一的
select count(id)
from
(select id from test.bd_channelday group by id )t;
2,分析
说明并不是数据问题,而且查询的问题
1,count查询走的是hive元数据, 找到hive元数据库的partition_params表, 查看numFiles, numRows, rawDataSize等属性
2,hive参数,默认为true,直接count表时会从元数据获取。
hive.compute.query.using.stats=true
3,两种解决方式
1,直接解决方式,使用count时不走元数据
set hive.compute.query.using.stats=false;
2,同步元数据统计信息
analyze table <table_name> COMPUTE STATISTICS;