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 }