1. 程式人生 > > 快速查詢hive資料倉庫表中的總條數

快速查詢hive資料倉庫表中的總條數

Author: kwu

快速查詢hive資料倉庫中的條數,在查詢hive表的條數,通常使用count(*),但是資料量大的時候,mr跑count(*)往往需要幾分鐘的時間。

1、傳統方式獲得總條數如下:

  1. selectcount(*) from ods.tracklog;  


執行時間為91.208s

2、與關係庫一樣hive表也可以通過查詢元資料來得到總條數:

  1. select d.NAME,t.TBL_NAME,t.TBL_ID,p.PART_ID,p.PART_NAME,a.PARAM_VALUE   
  2. from TBLS t   
  3. leftjoin DBS d  
  4. on t.DB_ID = d.DB_ID  
  5. leftjoin PARTITIONS p  
  6. on t.TBL_ID = p.TBL_ID   
  7. leftjoin 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. select FORMAT(sum(a.PARAM_VALUE),0)  
  11. from TBLS t   
  12. leftjoin DBS d  
  13. on t.DB_ID = d.DB_ID  
  14. leftjoin PARTITIONS p  
  15. on t.TBL_ID = p.TBL_ID   
  16. leftjoin PARTITION_PARAMS a  
  17. on p.PART_ID=a.PART_ID  
  18. where t.TBL_NAME='tracklog'and d.NAME='ods'and a.PARAM_KEY='numRows';  


只需0.071s即可返回

3、說明通過hive元資料的查詢總條數,只適用於有partition的表,我們正式表基本都是有partition的,只有部分小表,小於1萬條的沒有partition,這種小表count(*)是非常快的。