wordpress 建购物网站,网站制作公司美股上市,单位网站建设工作总结,国家高新技术企业图片背景#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;