HiveHive在简书

Hive分区表:发现指定时间范围内数据有更新的分区

2019-09-26  本文已影响0人  风筝flying

使用场景

需要查找最近修改时间在指定范围内的hive表或者hive表的相关分区,代码如下:

hive_tbl_path=path #hive表的路径
txt=`hdfs dfs -ls  $hive_tbl_path | awk '
       BEGIN {
         IFS="\t";
         n_days_ago=strftime("%Y-%m-%d%H:%M",systime()-1800)
         }{
           if($6$7>n_days_ago){print $8}
         }'`
#IFS:Linux系统的分隔符
#systime()-1800:当前时间半小时,可以任意指定
#$6:日期,$7:时分,$8:hive表的路径       
OLD_IFS="$IFS"
IFS=,
ntxt=${txt//[[:space:]]/,} #将分隔符换成逗号
arr=($ntxt)#字符串转成数组
dh=""
len=${#arr[*]}#计算数组长度
n=1
for a in ${arr[@]}
do
  dt=${a:0-13:13}#取出hive表路径中的分区信息
  if [ $n -lt $len ];then
    dh=$dh${dt//"/"/""},#替换/
  else
    dh=$dh${dt//"/"/""}
  fi
  n=$((n+1))
done
echo "$dh"
IFS="$OLD_IFS"
上一篇 下一篇

猜你喜欢

热点阅读