hive执行count和spark执行count结果不一致

九月2年前技术文章1517


【组件版本】hive on mr、spark

【问题现象】hive 执行count语句,结果条数为0,spark执行count语句能正常显示count数
【详细描述】

hive 执行count语句:显示count数为0.

select count(*) from edw_tmp.upcloud_warehouse_table_info_df where dt=20230813;

image.png

如果使用hive执行count语句,底层设置limit 限制条数的条件,可以正常显示出count数:

select count(*) from edw_tmp.upcloud_warehouse_table_info_df where dt=20230813 limit 10;

image.png

两者日志差别在于一个启动了底层mr程序,另一个没有启动。

正常客户是使用的spark进行的建表和查询

spark执行

image.png

spark 客户端thriftserver创建表和hive创建表,涉及到的元数据更新不一致,并且集群底层对count查询进行了优化,默认情况下,Hive会尝试使用表的统计信息(如表的行数、列统计等)来优化查询的执行计划,但是,在某些情况下,统计信息可能不准确或过时,这可能导致Hive做出不恰当的优化决策,影响查询性能和结果。

【解决方法】

方法1:设置如下参数,先禁用查询优化,走底层数据查询。

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

image.png

方法2:

hive使用analyze收集元数据信息后再进行查询。

ANALYZE TABLE  edw_tmp.upcloud_warehouse_table_info_df COMPUTE STATISTICS;

image.png


相关文章

HDP-Yarn开启CPU调度和隔离

HDP-Yarn开启CPU调度和隔离

进入到ambari主界面 点击yarn 点击config CPU Scheduling and Isolation 设置为enable修改高级配置点击ADVANCED搜索需要修改的配yarn.node...

Mac安装Hadoop文档-保姆级操作(二)

Mac安装Hadoop文档-保姆级操作(二)

配置hadoop进入hadoop的目录:cd /opt/homebrew/Cellar/hadoop/3.3.6/libexec/etc/hadoop修改core-site.xml<config...

trino容器对接ldap(二)

trino容器对接ldap(二)

前提:本文前提是在trino容器已经对接上hive组件,并且ldap已经部署完成的基础上进行的对接。前提文章见:helm安装部署trino对接hive(一)安装部署1、设置证书因为不确定是在哪台机器中...

mysql8 rpm安装教程

1:卸载原有REPO源查询已经存在的mysql及相关依赖包rpm -qa | grep mysql此时你会看到一堆列表,使用 yum 命令依次卸载yum remove mysql-xxx-xxx-xx...

ES运维(七)添加sql插件

ES运维(七)添加sql插件

一、概述ElasticSearch安装SQL插件下载地址(中国大佬开发)二、集成sql插件1、下载es-sql插件下载地址: https://github.com/NLPchina/elastics...

内存--模拟内存打满

1 tmpfs介绍tmpfs是一种虚拟内存文件系统,正如这个定义它最大的特点就是它的存储空间在VM里面     VM是由linux内核里面的vm子系统管理的东...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。