公司设计网站需要多久,宁波市镇海建设交通局网站,新特网架公司,网站图片比例背景#xff1a; 做数据质量检核任务的时候#xff0c;有些数据表有数据#xff0c;直接查hive执行select count(1) from table返回的值一直是0 问题原因#xff1a; hive通过select count(1)或者select count(*) 查询的是元数据库里面的rownum,如果数据表数据是通过load、…背景 做数据质量检核任务的时候有些数据表有数据直接查hive执行select count(1) from table返回的值一直是0 问题原因 hive通过select count(1)或者select count(*) 查询的是元数据库里面的rownum,如果数据表数据是通过load、put等方式加载进去的元数据库里面的rownum没有收集统计信息导致数据不对。 解决
1、hive部署的时候开启统计功能
hive.compute.query.using.stats该属性的默认值为false。如果设置为trueHive在执行某些查询时例如select count(1)只利用元数据存储中保存的状态信息返回结果。为了收集基本状态信息需要将hive.stats.autogather属性配置为true。为了收集更多的状态信息需要运行analyzetable查询命令。
设置
hive.stats.autogather true 2、临时方案
方案一
使用analyze table来执行统计过程datax或者flinkx同步数据最后需要执行这个
ANALYZE TABLE tableName COMPUTE STATISTICS;
这个也不是永久生效如果执行之后又put或者load数据量还是不对还要再次执行这个sql 方案二
窗口级别生效
set hive.compute.query.using.statsfalse; select count(1) from tableName;