美文网首页HiveHive在简书
Hive分区表:发现指定时间范围内数据有更新的分区

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

作者: 风筝flying | 来源:发表于2019-09-26 16:17 被阅读0次

    使用场景

    需要查找最近修改时间在指定范围内的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"
    

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/ryhnuctx.html