快速查询hive数据仓库表中的总条数

8 篇文章 0 订阅

Author: kwu

快速查询hive数据仓库中的条数,在查询hive表的条数,通常使用count(*),但是数据量大的时候,mr跑count(*)往往需要几分钟的时间。

1、传统方式获得总条数如下:

[sql]  view plain copy
  1. select count(*) from ods.tracklog;  


运行时间为91.208s

2、与关系库一样hive表也可以通过查询元数据来得到总条数:

[sql]  view plain copy
  1. select d.NAME,t.TBL_NAME,t.TBL_ID,p.PART_ID,p.PART_NAME,a.PARAM_VALUE   
  2. from TBLS t   
  3. left join DBS d  
  4. on t.DB_ID = d.DB_ID  
  5. left join PARTITIONS p  
  6. on t.TBL_ID = p.TBL_ID   
  7. left join PARTITION_PARAMS a  
  8. on p.PART_ID=a.PART_ID  
  9. where t.TBL_NAME='tracklog' and d.NAME='ods' and a.PARAM_KEY='numRows';  
  10.   
  11.   
  12. select FORMAT(sum(a.PARAM_VALUE),0)  
  13. from TBLS t   
  14. left join DBS d  
  15. on t.DB_ID = d.DB_ID  
  16. left join PARTITIONS p  
  17. on t.TBL_ID = p.TBL_ID   
  18. left join PARTITION_PARAMS a  
  19. on p.PART_ID=a.PART_ID  
  20. where t.TBL_NAME='tracklog' and d.NAME='ods' and a.PARAM_KEY='numRows';  




只需0.071s即可返回


3、说明通过hive元数据的查询总条数,只适用于有partition的表,我们正式表基本都是有partition的,只有部分小表,小于1万条的没有partition,这种小表count(*)是非常快的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值