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;

相关推荐
桂成林2 小时前
Hive UDF 开发实战:MD5 哈希函数实现
hive·hadoop·哈希算法
isNotNullX3 小时前
什么是数据分析?常见方法全解析
大数据·数据库·数据仓库·人工智能·数据分析
王小王-12317 小时前
基于Hadoop的京东厨具商品数据分析及商品价格预测系统的设计与实现
hadoop·数据分析·京东厨具·厨具分析·商品分析
谷新龙00119 小时前
大数据环境搭建指南:基于 Docker 构建 Hadoop、Hive、HBase 等服务
大数据·hadoop·docker
百度Geek说1 天前
搜索数据建设系列之数据架构重构
数据仓库·重构·架构·spark·dubbo
爱吃面的猫1 天前
大数据Hadoop之——Hbase下载安装部署
大数据·hadoop·hbase
王小王-1231 天前
基于Hadoop的餐饮大数据分析系统的设计与实现
hive·hadoop·flask·sqoop·pyecharts·hadoop餐饮大数据分析·hadoop美食数据分析
大数据CLUB1 天前
基于spark的航班价格分析预测及可视化
大数据·hadoop·分布式·数据分析·spark·数据可视化
A5资源网11 天前
为WordPress 网站创建一个纯文本网站地图(Sitemap)
前端·数据仓库·html·php
大数据CLUB11 天前
基于pyspark的北京历史天气数据分析及可视化_离线
大数据·hadoop·数据挖掘·数据分析·spark