批量查询HIVE所有表的大小和行数

概述

  • 需求:
    1、批量查询HIVE表的大小和行数
    2、批量查询HIVE表文件数和分区数
  • 思路
    借助程序(本文为Python2)遍历HIVE表,DESC FORMATTED获取表状态信息
  • 我们往往不需要所有表,而是指定的表,筛选方法:
    1、制定表名规则,USE 库+SHOW TABLES+LIKE进行筛选
    2、在MySQL(HIVE元数据存储位置)进行筛选

批量获取HIVE表基本信息

SELECT
    b.`NAME`,           -- 库名
    t.`TBL_NAME`,       -- 表名
    t.`TBL_TYPE`,       -- 表类型
    c.`PARAM_VALUE`,    -- 表注释
    s.`LOCATION`        -- 表的HDFS路径
FROM `DBS`b
INNER JOIN `TBLS`t ON t.`DB_ID`=b.`DB_ID`
INNER JOIN `SDS`s ON s.`SD_ID`=t.`SD_ID`
LEFT JOIN (
    SELECT `TBL_ID`,`PARAM_VALUE`
    FROM `TABLE_PARAMS`
    WHERE `PARAM_KEY`='comment'
)c ON c.`TBL_ID`=t.`TBL_ID`
WHERE t.`TBL_TYPE`='MANAGED_TABLE' OR t.`TBL_TYPE`='EXTERNAL_TABLE';

详细信息

SELECT
    b.`NAME` AS `库名`
    ,t.`TBL_NAME` AS `表名`
    ,t.`TBL_TYPE` AS `表类型`
    ,c.`PARAM_VALUE` AS `表注释`
    ,s.`LOCATION` AS `表的HDFS路径`
    ,t.`VIEW_EXPANDED_TEXT` AS `视图的SQL`
    ,t.`OWNER` AS `表的属主`
    ,t.`OWNER_TYPE` AS `表的属主的类型`
    ,s.`INPUT_FORMAT` AS `表输入格式`
    ,s.`OUTPUT_FORMAT` AS `表输出格式`
    -- ,s.`NUM_BUCKETS` AS `分桶数`
    -- ,s.`IS_COMPRESSED` AS 是否压缩
FROM `DBS`b
INNER JOIN `TBLS`t ON t.`DB_ID`=b.`DB_ID`
INNER JOIN `SDS`s ON s.`SD_ID`=t.`SD_ID`
LEFT JOIN (
    SELECT `TBL_ID`,`PARAM_VALUE`
    FROM `TABLE_PARAMS`
    WHERE `PARAM_KEY`='comment'
)c ON c.`TBL_ID`=t.`TBL_ID`
WHERE t.`TBL_TYPE`='MANAGED_TABLE' OR t.`TBL_TYPE`='EXTERNAL_TABLE';

查询单个HIVE表的大小和行数

DESC FORMATTED 库名.表名;

代码

MySQL建表,用于存储查询结果

USE data_management;
CREATE TABLE hive_table_status(
  update_time     TIMESTAMP     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值