shell脚本删除hive外部表数据(元数据+hdfs数据)

本人分区字段 dt 格式为 2021-06-28
分区建表hdfs存储位置为 /warehouse/xxx/ods/ods_tbl_table1/dt=2021-06-28/

删除hive外部表数据
1.删除元数据
2.删除hdfs存储数据

#!/bin/bash

# 执行sh xx.sh 2021-05-01 2021-06-01
# 删除hive表分区元数据及hdfs数据
# APP为hive数据库名称
APP=xxx
# hive启动目录
hive=/usr/hdp/3.1.4.0-315/hive/bin/hive

# 所执行的表名称
tables=(
"ods_tbl_table1"
"ods_tbl_table2"
"ods_tbl_table3"
)

if [[ -n "$1" ]]; then
    do_date=$1
fi

if [[ -n "$2" ]]; then
    endDay=$2
fi

for table in ${tables[*]}
        do
        echo $table
        #使用正则匹配目标表在hdfs上的路径
        info=`$hive -e "desc formatted $APP.$table"`
         #清楚分区元数据
        info=(`echo $info| sed -r "s/.*?(hdfs:.*?) Table.*?/\1/g"`)
        info=${info[0]}
        pp=("dt")
        ldate=$do_date
        rdate=$endDay
        while [ $ldate != $rdate ]
        do
        sql="alter table ${APP}.$table drop partition(dt='$ldate');"
        $hive -e "$sql1"
        #循环拼出分区名
        path=$info"/"${pp}=$ldate
        hdfs dfs -rm -r "$path"
        ldate=`date -d "+1 day ${ldate}" +%F` #获取第二天的时间
        done
done


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值