2021-10-08定期删除Hive表的过期数据

Posted Vics异地我就

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-10-08定期删除Hive表的过期数据相关的知识,希望对你有一定的参考价值。

定期删除Hive表的过期数据
由于Hive中有很多表都是每日全量的,数据量比较大,有些是可以将过去历史分区的数据进行删除的,所以需要一个定时执行的脚本,定时删除前七天的过期数据。

注:此脚本只针对分区字段为日期类型

#/bin/bash

today=$(date +%Y-%m-%d)
today_timestamp=$(date -d "$today" +%s)
echo "获取今天日期:$today,今日日期的时间戳$today_timestamp"
detele_day=$(date -d "7 days ago" +%Y-%m-%d)
detele_day_timestamp=$(date -d "$detele_day" +%s)
echo "获取60天前日期:$detele_day,60天前日期的时间戳:$detele_day_timestamp"
hdfs_directorys=(
  /apps/hive/warehouse/某个库/某个表/
)

for hdfs_directory in $hdfs_directorys[@]; do
  echo "当前要删除的hdfs路径为:$hdfs_directory"
  for hdfs_directory_p_day in $(sudo -u hdfs hdfs dfs -ls $hdfs_directory | awk 'BEGINFS=" "print $8'); do
    p_day=$(echo $hdfs_directory_p_day | awk 'BEGINFS="="print $2')
    p_day_timestamp=$(date -d "$p_day" +%s)
    echo "当前文件夹分区日期为:$p_day, 当前文件夹分区日期时间戳为:$p_day_timestamp"
    if [ $p_day_timestamp -lt $detele_day_timestamp ]; then
      echo "该HDFS的目录即将被删除,路径为:$hdfs_directory_p_day"
      sudo -u hdfs hadoop dfs -rm -r -skipTrash $hdfs_directory_p_day
    else
      echo "该HDFS的目录处于正常周期内不会被删除,路径为:$hdfs_directory_p_day"
    fi
  done
done
echo "程序运行完成"

以上是关于2021-10-08定期删除Hive表的过期数据的主要内容,如果未能解决你的问题,请参考以下文章

2021-10-08定期删除Hive表的过期数据

2021-10-08定期删除Hive表的过期数据

redis过期策略:定期删除+惰性删除

Redis的过期数据会被立马删除吗?

Redis升级

Redis定期删除和惰性删除