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;

相关推荐
香山上的麻雀100820 小时前
Hive内部表(MANAGED_TABLE)的“批量删除分区”特性详解
数据仓库·hive·hadoop
石像鬼₧魂石21 小时前
【Y2Ksoft】贵阳枫叶控股ERP管理系统 —— 管业制造 · 全链路数字化 · 开箱即用
大数据·数据仓库·数据库开发·数据库架构
石像鬼₧魂石1 天前
钢结构ERP管理系统 —— 玻璃拟态 · 单文件HTML(系统为开发测试虚拟数据)
大数据·数据仓库·制造·数据库开发·数据库架构
牛奶咖啡132 天前
大数据Hadoop运维应用实践——双NameNode高可用Hadoop集群架构(上)
hadoop·高可用hadoop集群搭建·给服务器做免密信任·修改服务器主机名称·服务器本地配置主机名与ip映射·服务器配置jdk环境·服务器安装zooker
jjjava2.03 天前
SpringMVC入门指南:从零掌握核心要点
数据仓库·hive·hadoop
Jay_Franklin3 天前
Python 数据处理工作流:marimo、PyCharm 与数据存储
开发语言·数据仓库·ide·python·pycharm·数据分析·开源
ljs6482739514 天前
Hadoop集群部署常见问题
大数据·hadoop·分布式
TTBIGDATA4 天前
【Ambari Plus】14.Hue 安装
大数据·hadoop·ambari·hdp·hue·cdh·bigtop
RestCloud4 天前
借助ETL工具,实现AI智能体+数据的落地
数据仓库·人工智能·sql·etl·etlcloud·数据集成平台·java脚本
AllData公司负责人5 天前
数据库同步平台|AIIData数据中台实现OceanBase、达梦数据库、OpenGauss、人大金仓、Hive、TDengine 一键接入Doris
大数据·数据库·hive·mysql·oceanbase·tdengine