HIVE获取表的大小和修改日期

 

1 ### 获取表的大小
2 hdfs dfs -du /user/hive/warehouse/database_name.db/ > 360_du
3 ### 获取表的修改日期
4 hdfs dfs -ls /user/hive/warehouse/database_name.db/ > 360_ls

 

### 7K+个表测试

### shell处理,效率低,执行时间: 7m32.664s

1 ### 获取表的大小和修改日期
2 cat 360_du|while read line
3 do
4     str=$(echo ${line}|awk -F"[ /]" '{print tolower($NF)"|"$1}')
5     table=$(echo ${str}|awk -F'|' '{print $1}')
6     day=$(grep -iw ${table} 360_ls|awk '{print $6}')
7     echo ${str}"|"${day}
8 done

 

### perl处理,效率超高,执行时间: 0m0.298s

1 ### 获取表的大小和修改日期
2 #!/usr/bin/perl
3 use strict;
4 my %table_du = map{my @m = split /\s+/;$m[0],$m[1]} `awk -F'[ /]' '{print tolower(\$NF),\$1}' 360_du`;
5 my %table_ls = map{my @m = split /\s+/;$m[0],$m[1]} `awk '{print tolower(\$NF),\$6}' 360_ls|awk -F\/ '{print \$NF}'`;
6 
7 for (keys %table_du){
8     print "$_|$table_du{$_}|$table_ls{$_}\n";
9 }

 

posted @ 2018-03-28 08:46  chenzechao  阅读(5665)  评论(0编辑  收藏  举报