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 }