美文网首页Work, Work~
指定时间批量删除hdfs中hive的session目录

指定时间批量删除hdfs中hive的session目录

作者: 海边的贝壳林 | 来源:发表于2018-12-13 10:58 被阅读0次
[root@xxxxx ~]# hadoop fs -du -h /tmp | grep G
1.9 G    /tmp/eventlog
92.7 G   /tmp/hive
#!/bin/bash
usage='Usage: dir_diff.sh [days]'

if [ ! "$1" ]
then
    echo $usage
    exit 1
# 这里还需要检查下是否是两位以下正整数
fi

days=$1
now=$(date +%s)
seconeds_a_day=$[24 * 60 * 60]
# 删除此时间之前的数据
last_day_second=$[$now - $days * $seconeds_a_day]
echo '当前本地时间:' `date`
echo '删除截止时间:' `date -d "1970-01-01 UTC $last_day_second seconds"`
echo "保留文件天数: $days"
hadoop fs -ls /tmp/hive/ | grep "^d" | grep -v /tmp/hive/.hive-staging_hive_ | awk '{print $8}' | while read base_dir; do
    dirs_array=()
    echo "声明数组"
    index=0
    while IFS= read -r f; do
        dir_date=`echo $f | awk '{print $6}'`
        if [ $last_day_second -gt $(date -d "$dir_date" +%s) ]; then
            dir_addr=`echo $f | awk '{ print $8 }'`
            dirs_array[$index]=$dir_addr
            let index+=1;
#            echo $dir_date $dir_addr
        fi
    done < <(hadoop fs -ls $base_dir | grep "^d")
    if [ ${#dirs_array[*]} -gt 0 ]
    then
        echo "超时的文件夹个数:" $base_dir": "${#dirs_array[*]}
        hadoop fs -rm -R -skipTrash ${dirs_array[*]}
    else
        echo "没有符合要求的文件夹": $base_dir
    fi
done

相关文章

网友评论

    本文标题:指定时间批量删除hdfs中hive的session目录

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