阿里云odps多线程批量清理project数据
阿里云odps多线程批量清理project数据
·
1、配置需要清理project清单
[root@ecs /home/caoyu/odps/drop_project]$ cat projects_list
odps1_uat1
odps2_uat1
2、执行删除数据脚本
[root@ecs /home/caoyu/odps/drop_project]$ cat drop_projects.sh
#!/bin/sh
#project="bdm_mkt_uat1"
start_time=`date +%s` #定义脚本运行的开始时间
tmp_fifofile="/tmp/$$.fifo"
mkfifo $tmp_fifofile # 新建一个FIFO类型的文件
exec 6<>$tmp_fifofile # 将FD6指向FIFO类型
rm -rf $tmpfofile #删也可以,
thread_num=5 # 定义最大线程数
#根据线程总数量设置令牌个数
#事实上就是在fd6中放置了$thread_num个回车符
for ((i=0;i<${thread_num};i++));do
echo
done >&6
odpscmd=/home/caoyu/odpscmd_dst/bin/odpscmd
conf=/home/caoyu/odpscmd_dst/conf/odps_config.ini
for project in `cat projects_list`
do
tables=$($odpscmd --config=$conf -e "use $project;show tables"|awk -F: '{print $NF}')
for table in $tables
do
read -u6
{
$odpscmd --config=$conf -e "use $project;drop table $table"
echo >&6
} &
done
done
wait # 要有wait,等待所有线程结束
stop_time=`date +%s` # 定义脚本运行的结束时间
echo "TIME:`expr $stop_time - $start_time`" # 输出脚本运行时间
exec 6>&- # 关闭FD6
echo "over" # 表示脚本运行结束
更多推荐
所有评论(0)