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;

相关推荐
路边草随风9 小时前
java操作cosn使用
java·大数据·hadoop
码以致用18 小时前
Hive笔记
hive·hadoop·笔记
路边草随风18 小时前
通过hive元数据库查询表信息
大数据·数据库·hive·hadoop
RestCloud18 小时前
人大金仓数据库集成实战:ETL 如何解决国产化替代挑战
数据库·数据仓库·etl·数据集成·数据同步·人大金仓
A1301609867118 小时前
获客难?沃创云帮体系认证企业打通获客增长闭环
大数据·数据仓库·人工智能·机器人·信息与通信
Agatha方艺璇19 小时前
安装Hive初始化MySQL报错 (ZLjava/lang/String;Ljava/lang/0bject; )V
hive·mysql
yumgpkpm21 小时前
Hadoop、Cloudera CDH没有消亡,它是大数据的未来
人工智能·hive·hadoop·spark·kafka·开源·hbase
沧海寄馀生21 小时前
Apache Hadoop生态组件部署分享-Hue
大数据·hadoop·分布式·apache
写代码的【黑咖啡】1 天前
关于传统数据仓库的介绍
数据仓库
清木!1 天前
详解数据仓库和数据集市:ODS、DW、DWD、DWM、DWS、ADS
数据仓库