Hive批量删除表分区
shell脚本
cur_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd ${cur_dir}
hive -e "show databases;" > ${cur_dir}/all_database.txt
cat all_database.txt | awk '{print $2}' | awk '/^src_.*/{print}' > ${cur_dir}/src_database.txt
for database in `cat ${cur_dir}/src_database.txt`
do
hive -e "use ${database};show tables;" > ${cur_dir}/${database}_tbs.txt
for table in `tail -n +3 ${cur_dir}/${database}_tbs.txt | awk '/[a-zA-Z]/{print $2}'`
do
echo -e "\e[36m -----${database}.${table}------ \e[0m"
hive -e "show partitions ${database}.${table}" > ${cur_dir}/${database}.${table}_pts.txt
for partition in `tail -n +3 ${cur_dir}/${database}.${table}_pts.txt | awk '/[a-zA-Z0-9]/{print $2}' | awk '/^batch_no=202005.*/{print}'`
do
echo -e "\e[36m-----${partition}------\e[0m"
hive -e "alter table ${database}.${table} drop if exists partition (${partition});"
done
done
done
HDFS清理回收站
hdfs dfs -du -h /user/hive/
hdfs dfs -rm -r -skipTrash /user/hive/.Trash