show table extended like

文章讲述了在大数据集群环境中如何处理冗余数据表的问题,通过使用HDFS命令和Hive的showtableextended命令获取表的访问时间。当遇到权限限制时,作者介绍了使用hcat工具来查看无权限的hive表信息,并提供了批量获取数据库表访问时间的脚本。最后,文章提到了如何筛选和整理这些信息,以及如何根据访问时间删除一年内未访问的表(不包括备份表)。
摘要由CSDN通过智能技术生成

我们在使用大数据集群时,时间越长越发现有大量的冗余数据表,删除却发现所有人的使用情况不一样,删除的话可能会影响当前正在运行的业务
于是我尝试了下面几种方法
查看表描述

desc formatted table_name

在图上我们可以看到这里只能看到最后一次DDL时间(也就是增删改的时间),这样并不能拿到select的时间

HDFS时间

hadoop fs -ls /user/hive/warehouse/tmp.db/regexp_test/
hadoop fs -stat /user/hive/warehouse/tmp.db/regexp_test/

这个方式同样不能拿到放问时间,只能拿到修改时间

最终在大佬的知道下,学到了一个新命令

use tmp;show table extended like regexp_test

此刻我们终于拿到了我们想要的访问时间lastAccessTime,但是有另外一个问题,权限问题,我们没有权限的表不能用hive/beeline 去查看,spark-sql 无法执行该命令

hive自带黑科技–hcat

hcat 是为了让没有hive账户的人去查看hive表信息的工具
下面提供一个批量获取数据库全部表访问时间的脚本

aa=`hcat -e "show databases;"`
array=$aa
for i in ${array[@]}
do 
    dd=`show tables in $i`
    arr=${dd}
    for j in ${arr[@]}
      echo ";use ${i};show table extended like ${j}"  >> xx.sql
    done
done

hcat -f xx.sql >> result_table_info.txt

集群表越多运行时间越长,可以选择部分数据库运行

执行完是一个类型map<key,value>的文件,可以取关键行信息来操作
#1.选取我们想要的行

cat result_table_info.txt|grep -E 'location|totalFileSize|lastAccessTime'|awk -F':' '{print $NF}' >> resut_user_info.txt
#2.把没个表的信息拼成一行,两种方法均可
cat resut_user_info.txt | sed 'N;N;s/\n/,/g'   #行数-1个N;
or
cat  awk 'ORS=NR%3?" ":"\n"{print }'|sed 's/ /,/g'   # 对3取余的3目运算

最后可以吧文件到入mysql,或hive 数据库,转化时间戳(毫秒级),可以将一年内无访问的表删除(备份表除外)
————————————————
版权声明:本文为CSDN博主「魂落忘川犹在川」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43345864/article/details/118634751

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值