Hive通过TEZ引擎执行count

1 篇文章 0 订阅
1 篇文章 0 订阅

     Hive使用TEZ作为默认的执行引擎,当表插入完记录后,count得到的结果为0,如果使用MR作为执行引擎来执行count,结果与实际记录数一致。

    使用TEZ执行count十分高效,绕过了MapReduce操作,实际结果不正确,应该是TEZ内部有某种机制count()直接查询统计信息,然后统计信息不是最新的,导致count结果不正确。

hive> SELECT count(1) from ods.table1;
OK
0
Time taken: 2.283 seconds, Fetched: 1 row(s)

使用analyze命令对表重新更新统计信息并重新统计后结果正确:

hive> analyze table ods.table1 compute statistics;
Query ID = hadoop_20190621103221_1a46b8cb-75cd-486d-9b71-4e7d9c2a13f6
Total jobs = 1
Launching Job 1 out of 1
Status: Running (Executing on YARN cluster with App id application_1557916445942_13506)

----------------------------------------------------------------------------------------------
        VERTICES      MODE        STATUS  TOTAL  COMPLETED  RUNNING  PENDING  FAILED  KILLED  
----------------------------------------------------------------------------------------------
Map 1 .......... container     SUCCEEDED      1          1        0        0       0       0  
----------------------------------------------------------------------------------------------
VERTICES: 01/01  [==========================>>] 100%  ELAPSED TIME: 5.29 s     
----------------------------------------------------------------------------------------------
OK
Time taken: 7.0 seconds
hive> SELECT count(1) from ods.table1;
OK
1221575
Time taken: 2.283 seconds, Fetched: 1 row(s)

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值