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

九月2年前技术文章1406


【组件版本】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


相关文章

Hive优化之配置参数的优化(一)

Hive优化之配置参数的优化(一)

 Hive是大数据领域常用的组件之一,主要是大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中是经常涉及的一个点,因此掌握一些Hive调优是必不可少的一项技能。影响Hive效率的...

CDH实操--hive高可用

CDH实操--hive高可用

前言在CDH中,hive metastore、hiveserver2若角色单实例部署,或者部署多个实例但是连接配置任选其一的话,均存在单点问题,一旦实例故障就会影响业务稳定;这时我们就好考虑高可用部署...

Hive优化之SQL的优化(三)

Hive优化之SQL的优化(三)

     Hive是大数据领域常用的组件之一,主要是大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中是经常涉及的一个点,因此掌握一些Hi...

ranger对接metastore

ranger对接metastore

前提:本文前提是基于集群中已经安装部署了ranger组件、hive组件的情况下,增加ranger metastore插件的对接。安装部署1、ranger metastore插件编译插件下载 https...

Hive压测之开源Hive基准测试工具(hive-testbench-hive14)

Hive压测之开源Hive基准测试工具(hive-testbench-hive14)

此文章禁止转载概述Hive基准测试工具工具,可用来造数测试Hive基本性能。TPC-DS:提供一个公平和诚实的业务和数据模型,99个案例TPC-H:面向商品零售业的决策支持系统测试基准,定义了8张表,...

Hive优化之Spark执行引擎的参数优化(二)

Hive优化之Spark执行引擎的参数优化(二)

        Hive是大数据领域常用的组件之一,主要是大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中...

发表评论    

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