查看hive表(分区)大小,支持多写法

针对hive内表,经常要查看表大小或分区路径设置的脚本

#!/bin/bash
. /etc/profile
. ~/.bash_profile
. ~/.bashrc
# 参数 "tmp" "tmp_20200808" "201909"
if [[ $# = 3 ]];then
    database=$1
    table_name=$2
    hadoop fs -du -h /user/hive/warehouse/${database}".db"/${table_name} |grep $3
# 参数 "tmp.tmp_20200808" "201909"
elif [[ $# = 2 ]] && [[ $1 =~ '.' ]]; then
    avg=$1
    database=`echo ${avg}|awk -F'.' '{print $1}'`
    table_name=`echo ${avg}|awk -F'.' '{print $2}'`
    hadoop fs -du -h /user/hive/warehouse/${database}".db"/${table_name} |grep $2
# 参数 "tmp" "tmp_20200808"
elif [[ $# = 2 ]]; then 
    database=$1
    table_name=$2
    hadoop fs -du -h /user/hive/warehouse/${database}".db"/${table_name}
#参数 "tmp.db/tmp_20200808"
elif [[ $# = 1 ]] && [[ $1 =~ '.db' ]]; then
    avg=$1
    database=`echo ${avg}|awk -F'/' '{print $1}'`
    table_name=`echo ${avg}|awk -F'/' '{print $2}'`
    hadoop fs -du -h /user/hive/warehouse/${database}/${table_name}
elif [[ $# = 1 ]]; then 
    avg=$1
    database=`echo ${avg}|awk -F'.' '{print $1}'`
    table_name=`echo ${avg}|awk -F'.' '{print $2}'`
    hadoop fs -du -h /user/hive/warehouse/${database}".db"/${table_name}
else 
  echo "检查参数个数和格式"
fi

用法

脚本名: hdfsdu.sh
在~/.bashrc 中添加,workdir 为脚本目录

alias hdfsdu="sh ${workdir}/hdfsdu.sh"

保存并刷新资源 source ~/.bashrc

#查看整库
hdfsdu tmp
#查看某个表所有一级分区或分区表文件
hdfsdu tmp.table_name
# 支持路径形式库表名
hdfsdu tmp.db/table_name
#支持过滤特定分区
hdfsdu tmp.db/table_name 20210919

版权声明:本文为weixin_43345864原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。