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

Posted claireyuancy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高速查询hive数据仓库表中的总条数相关的知识,希望对你有一定的参考价值。

Author: kwu

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

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

select count(*) from ods.tracklog;

技术分享

执行时间为91.208s

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

select d.NAME,t.TBL_NAME,t.TBL_ID,p.PART_ID,p.PART_NAME,a.PARAM_VALUE 
from TBLS t 
left join DBS d
on t.DB_ID = d.DB_ID
left join PARTITIONS p
on t.TBL_ID = p.TBL_ID 
left join PARTITION_PARAMS a
on p.PART_ID=a.PART_ID
where t.TBL_NAME=‘tracklog‘ and d.NAME=‘ods‘ and a.PARAM_KEY=‘numRows‘;


select FORMAT(sum(a.PARAM_VALUE),0)
from TBLS t 
left join DBS d
on t.DB_ID = d.DB_ID
left join PARTITIONS p
on t.TBL_ID = p.TBL_ID 
left join PARTITION_PARAMS a
on p.PART_ID=a.PART_ID
where t.TBL_NAME=‘tracklog‘ and d.NAME=‘ods‘ and a.PARAM_KEY=‘numRows‘;


技术分享


仅仅需0.071s就可以返回


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







以上是关于高速查询hive数据仓库表中的总条数的主要内容,如果未能解决你的问题,请参考以下文章

mysql查询表中数据总条数的语句怎么写

mysql groupby 后怎么获取每组数据的总条数

java中如何获取结果集ResutSet的总条数?

mysql Count 查询记录总条数,效率很慢

oracle数据库 ,想统计一个用户下,所有表的记录的总条数,用啥语句可以实现?

Sql Server中查询数据库所有表及其数据总条数和占用空间