hive执行select count(1)返回0

背景:

做数据质量检核任务的时候,有些数据表有数据,直接查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。如果设置为true,Hive在执行某些查询时,例如select count(1),只利用元数据存储中保存的状态信息返回结果。为了收集基本状态信息,需要将hive.stats.autogather属性配置为true。为了收集更多的状态信息,需要运行analyzetable查询命令。

查count(1)不走元数据,直接查影响性能。

hive.stats.autogather = false

2、临时方案

方案一:

使用analyze table来执行统计过程,datax或者flinkx同步数据,最后需要执行这个

ANALYZE TABLE tableName STATISTICS;

这个也不是永久生效,如果执行之后,又put或者load数据量还是不对,还要再次执行这个sql

方案二:

窗口级别生效

set hive.compute.query.using.stats=false;

select count(1) from tableName;

相关推荐
A 计算机毕业设计-小途2 小时前
大四零基础用Vue+ElementUI一周做完化妆品推荐系统?
java·大数据·hadoop·python·spark·毕业设计·毕设
君不见,青丝成雪6 小时前
Flink双流join
大数据·数据仓库·flink
超级迅猛龙11 小时前
保姆级Debezium抽取SQL Server同步kafka
数据库·hadoop·mysql·sqlserver·kafka·linq·cdc
青云交11 小时前
Java 大视界 -- Java 大数据分布式计算在基因测序数据分析与精准医疗中的应用(400)
java·hadoop·spark·分布式计算·基因测序·java 大数据·精准医疗
Lx35215 小时前
Hadoop小文件处理难题:合并与优化的最佳实践
大数据·hadoop
君不见,青丝成雪20 小时前
Hadoop技术栈(四)HIVE常用函数汇总
大数据·数据库·数据仓库·hive·sql
最初的↘那颗心1 天前
Flink Stream API 源码走读 - print()
java·大数据·hadoop·flink·实时计算
君不见,青丝成雪1 天前
hadoop技术栈(九)Hbase替代方案
大数据·hadoop·hbase
晴天彩虹雨1 天前
存算分离与云原生:数据平台的新基石
大数据·hadoop·云原生·spark
yatingliu20191 天前
HiveQL | 个人学习笔记
hive·笔记·sql·学习