目的:获取hive中所有表的创建时间和表大小

本文给出了一个既可以统计hive中非分区表也可以统计分区表的表大小的方式。
由于业务上没有针对分区数据统计的需求,所以可以使用此种方式统计。
如果业务需要统计分区数据,这种方式就不合适了。

1、获取hive当前的表创建时间和表名

在hive的元数据存储数据库中执行(当前为mysql):

SELECT   CREATE_TIME,TBL_NAME FROM   TBLS ;

结果文件存储在:all_tables_name_createTime.txt(内容见第3点)

2、获取当前hdfs中hive库表存储路径和大小

hive_data_size_count.sh

#!/bin/env bash
HIVE_WAREHOUSE=/user/hive/warehouse
ALL_DATABASES=(`hdfs dfs -ls ${HIVE_WAREHOUSE} | awk '{print $8}'`)for i in ${!ALL_DATABASES[@]}
doecho "当前库${ALL_DATABASES[i]}的大小:"hdfs dfs -du -h ${HIVE_WAREHOUSE} | grep ${ALL_DATABASES[i]}echo "当前库内表的大小"hdfs dfs -du -h ${ALL_DATABASES[i]}echo -e "\n\n"
done

结果文件存储在:hive_data_count6(文件内容见第4点)

3、将1中获取的hive创建时间转换为易读性好的格式

脚本名称:changeTimeFormat.sh
将有两列字段——hive表创建的时间(时间戳形式)、hive表名——的文件中,时间戳修改为阅读友好型的年月日时分秒形式。

#!/bin/env bash
while read line
doecho $lineTIMESTAMP=`echo $line | awk '{print $1}'`TABLE_NAME=`echo $line | awk '{print $2}'`if [[ $TIMESTAMP -ne "CREATE_TIME" ]];then# 格式为:年月日|时分秒,之所以使用|作为间隔符,是因为文件是以\t制表符作为间隔,防止空格和制表符在使用echo命令时候无法将时间以整个字段进行分隔TIME_FORMAT=`date -d @$TIMESTAMP "+%Y-%m-%d|%H:%M:%S"`elseTIME_FORMAT="CREATE_TIME"fiecho -e "$TIME_FORMAT\t$TABLE_NAME" >> all_tables_name_createTimeFormat.txt
done <all_tables_name_createTime.txt

源文件:all_tables_name_createTime.txt文件示例(间隔符是\t,制表符)

CREATE_TIME TBL_NAME
1618910542 yjj_bzy
1619074492 ods_yjj_bzy
1619075278 stg_yjj_bzy
1620637222 wxm_ods_test_2021_5_10

结果文件:all_tables_name_createTimeFormat.txt (间隔符是\t,制表符)

CREATE_TIME TBL_NAME
2021-04-20|17:22:22 yjj_bzy
2021-04-22|14:54:52 ods_yjj_bzy
2021-04-22|15:07:58 stg_yjj_bzy
2021-05-10|17:00:22 wxm_ods_test_2021_5_10

4、获得表的创建时间和大小

脚本名称:combineNameTimeSize.sh
脚本目的是从hdfs的/user/hive/warehouse目录中得到的表内容中获取hive元数据中实际存在的hive表的大小和创建时间

#!/bin/env bash# bei pipei de wenjian
SOURCE_FILE=all_tables_name_createTimeFormat.txt
FILTER_FILE="hive_data_count6"
RESOUT_FILE=hive_table_name_size_time.txtwhile read line
doTIME=`echo $line | awk '{print $1}'`TABLE_NAME=`echo $line | awk '{print $2}'`HIVE_TABLE_SIZE_PATH=`cat $FILTER_FILE | grep $TABLE_NAME`TABLE_SIZE=`echo $HIVE_TABLE_SIZE_PATH | awk '{print $1}'`HDFS_PATH=`echo $HIVE_TABLE_SIZE_PATH | awk '{print $2}'`if [[ "$TIME" -eq "CREATE_TIME" ]];thenecho -e "$TIME\t$TABLE_NAME\tTABLE_SIZE\tHDFS_PATH" >> $RESOUT_FILEelseecho -e "$TIME\t$TABLE_NAME\t$TABLE_SIZE\t$HDFS_PATH" >> $RESOUT_FILEfi
done < $SOURCE_FILE

被过滤的hdfs数据文件:hive_data_count6
(数据获取方式:hdfs dfs -du -h /user/hive/warehouse)

37.1K /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_gc_info_i_y
12.7K /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_hw_gdccrb_i_d
7.6K /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_hw_gdfsfdcrb_i_d
4.2K /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_hw_xlljjsczrb_i_d
5.7K /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_hw_xlslyczqkrb_i_d
12.9K /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_hw_yjswclzxclrb_a_d
10.7K /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_js_ssljflxqinfo_i_d
2.7K /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_js_vehicleinfo_i_m
1.8M /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_sr_store_i_d
13.9K /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_zxc_station_a_d

结果数据:hive_table_name_size_time.txt

CREATE_TIME TBL_NAME TABLE_SIZE HDFS_PATH
2021-04-20|17:22:22 yjj_bzy 27.1K /user/hive/warehouse/ods.db/ods_yjj_bzy
2021-04-22|14:54:52 ods_yjj_bzy 27.1K /user/hive/warehouse/ods.db/ods_yjj_bzy
2021-04-22|15:07:58 stg_yjj_bzy 636.7K /user/hive/warehouse/stg.db/stg_yjj_bzy
2021-05-10|17:00:22 wxm_ods_test_2021_5_10 117.1K /user/hive/warehouse/test_hive2.db/wxm_ods_test_2021_5_10
2021-05-10|11:11:53 t_czfwjcxxb_wxm 1.1M /user/hive/warehouse/ods_zfw.db/t_czfwjcxxb_wxm

5、将hive_table_name_size_time.txt文件的内容拷贝到excel表格中,即可形成4列的数据表,便于数据统计

hive:统计hive中所有表的大小和创建时间相关推荐

  1. 在 sql server 中,查询 数据库的大小 和 数据库中各表的大小

    2019独角兽企业重金招聘Python工程师标准>>> 在 sql server 中,查询 数据库的大小 和 数据库中各表的大小 其实本来只想找一个方法能查询一下 数据库 的大小,没 ...

  2. SQL Server:统计数据库中每张表的大小

    1. 统计数据库中每张表的大小 1.1 首先执行下面的命令 exec sp_MSforeachtable @command1="sp_spaceused '?'"; 1.2 检测当 ...

  3. 统计mysql说有表的大小_MySQL统计数据库和表大小

    MySQL统计数据库的schema和table时,可以通过以下SQL命令进行查询. 查看该数据库实例下所有库大小(单位:MB) mysql> select table_schema,sum(da ...

  4. 查看mysql单个表大小限制_查看单个mysql数据库中各个表的大小

    SQL命令为: SELECT TABLE_NAME,DATA_LENGTH+INDEX_LENGTH,TABLE_ROWS,concat(round((DATA_LENGTH+INDEX_LENGTH ...

  5. Hive编程指南中的命令

    最近刚接触大数据这块,从来没写过博客.就用大数据做为新的开始吧.一下为最近刚读完<Hive编程指南>这本书,本人整理的一些书中常用命令及简介.勿喷,谢谢. 1. 设置hive为本地模式,设 ...

  6. 查看数据库(表)的大小(Mysql和Oracle)

    言简意赅: Mysql数据库 1.进入information_schema 数据库(存放了其他的数据库的信息) use information_schema; 2.查询mysql数据库的大小: sel ...

  7. linux展示表空间大小,oracle中看表空间大小等

    oracle中看表空间大小等 发布时间:2008-01-24 00:03:28来源:红联作者:skurialtn 在网络上查过很多次表空间.表的大小等信息,老是记不住,还是记下来好了. 首先用户名sy ...

  8. 微信公众帐号开发教程第10篇-解析接口中的消息创建时间CreateTime

    从微信公众平台的消息接口指南中可以看出,每种类型的消息定义中,都包含有CreateTime参数,它表示消息的创建时间,如下图所示: 上图是消息接口指南中4.1-文本消息的定义.注意CreateTime ...

  9. mysql建表datetime_mysql建表-创建时间、修改时间

    mysql在建表时要有创建时间.修改时间这两个字段 Navicat设置方法和SQL语法如下: 小编用的mysql版本是5.7,查看自己的数据库方法如下:蜗牛:Navicat查看数据库版本​zhuanl ...

最新文章

  1. Win32汇编语言021 - 053
  2. 分享几个vs code 的几个插件
  3. python语言怎么输入-python/基础输出输入用法
  4. hdu1799 循环多少次?(组合递推公式的使用)
  5. leetcode装最多水的容器383
  6. SpringBoot快速构建项目
  7. 微信支付—微信H5支付「微信内部浏览器」
  8. location php,Nginx服务器中的location配置详解
  9. 排序算法之归并排序(JAVA)
  10. asp + Access 常见的数据库访问失败问题 Microsoft JET Database Engine 错误 '80004005' 解决办法...
  11. 将不确定变为确定~Linq to SQL不能随机排序吗?
  12. Python安装注意事项
  13. StreamInsight 编程模型之适配器
  14. ORA-00257错误解决方法
  15. 谷歌SEO之如何使用Ahrefs工具选择关键词(2022更新教程)
  16. 零基础转行学编程技术难吗?
  17. ehvierwer登录与不登录_【更新】亿寻—免登录不限速下载百度网盘
  18. 关于小学生学习编程语言C++的经历经验分享,五问五答
  19. 深入理解java虚拟机(十三)Java Mission Control:可持续在线的监控工具
  20. 王爽汇编语言第三版答案

热门文章

  1. Windows环境下安装及部署Nginx教程
  2. 安装并使用Pynq-Z2官方镜像
  3. 查看django 是什么版本
  4. [自动驾驶]自动驾驶汽车到底需要哪些类型的传感器?
  5. 监控镜头如何选型及故障处理
  6. js循环发起ajax请求
  7. 20080407 - Fire in the hole
  8. Java Method类简介说明
  9. 2021江西高考成绩查询微信可以吗,2021年江西高考成绩查询网站查分网址:http://www.jxeea.cn/...
  10. linux-lamp-微信小程序-ego篇一