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;

相关推荐
人类群星闪耀时3 小时前
数据分析入门:从数据探索到洞察真相
大数据·hadoop·sql
risc1234563 小时前
export HADOOP_CLASSPATH=`hadoop classpath`
hadoop
weixin_3077791312 小时前
Visual Studio 2022和C++实现带多组标签的Snowflake SQL查询批量数据导出程序
开发语言·c++·数据仓库·sql·云计算
卡卡东~14 小时前
CentOS7 服务器安装 Hadoop 和 Hive
服务器·hive·hadoop
别惊鹊14 小时前
hadoop集群配置-ssh无密登陆
服务器·hadoop·ssh
精神病不行计算机不上班1 天前
【数据仓库与数据挖掘基础】第二章 数据仓库原理
数据仓库·数据挖掘·spark
火龙谷2 天前
hadoop案例实践:气象大数据离线分析
大数据·hadoop·分布式
小小打工人2222 天前
《SQL性能优化指南:新手如何写出高效的数据库查询
hadoop·mysql·hbase
Data-Miner2 天前
31页PPT解析数据湖架构、数据湖和数据仓库的区别、湖仓一体化湖仓一体建设解决方案
大数据·数据仓库
Lowe-小码2 天前
Hive-基础入门
数据仓库·hive·hadoop