Hive 快速查询DB下的表及行数

Hive的元数据信息存储在元数据库里面,因此可以通过元数据库来快速统计表及数据量的情况,这里以元数据库为MySQL为例,可以通过以下SQL命令快速获取,
以下SQL需要先进入MySQL元数据库中执行

select c.NAME, a.TBL_NAME, b.PARAM_KEY, b.PARAM_VALUE from hive.TBLS as a join hive.TABLE_PARAMS as b join hive.DBS c 
where a.TBL_ID = b.TBL_ID and a.DB_ID = c.DB_ID and c.NAME IN ('bas','dma','mdb') and b.PARAM_KEY = 'numRows';

样例输出如下,

+------+---------------------------------------+-----------+-------------+
| NAME | TBL_NAME                              | PARAM_KEY | PARAM_VALUE |
+------+---------------------------------------+-----------+-------------+
| bas  | syn_a_organ                           | numRows   | 0           |
| bas  | syn_code_entpostcode                  | numRows   | 0           |
| bas  | syn_code_enttypecode                  | numRows   | 0           |
| bas  | syn_code_invstycode                   | numRows   | 0           |
| bas  | syn_code_invtypecode                  | numRows   | 0           |
| bas  | syn_code_natcode                      | numRows   | 0           |
。。。

除了这种方式,我们也可以通过Hue,或者用脚本的方式查询每个表的数据量,具体可以参考博客
hive里如何快速查看表中有多少记录数

不过,既然是从元数据表中获取,就涉及到数据准确性的问题,numRows保存的是表的统计信息数据,如果统计信息不更新,那么这个值可能也就不够准确,如果希望统计尽可能准确,建议先对表进行更新统计信息的动作,更新统计信息要注意区别表是分区表还是非分区表,主要命令为:
以下命令从Hive shell下面执行

--非分区 表
analyze table mdb.tmp_e_sm_baseinfo_special_3                             compute statistics;
--分区表,单字段
ANALYZE TABLE dma.tmp_bh_e_ms_sum_d PARTITION(stat_date_p='20140922') COMPUTE STATISTICS;
--分区表,多字段
ANALYZE TABLE dma.tmp_bh_e_ms_sum_m PARTITION(stat_date_p='201711',idx_no1='MONTH_02') COMPUTE STATISTICS;
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据源的港湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值