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{$_}
";
9 }
原文地址:https://www.cnblogs.com/chenzechao/p/8661643.html