大数据 Hadoop下HIVE 定时备份定时删除全库建表语句

10 篇文章 1 订阅
8 篇文章 0 订阅

今天又被工头叫去了

因为我们现在系统还是试运行阶段,这个阶段对系统中表的改动是常有的事,包括表结构,列名,属性,HQL脚本等等;为了保证万一有人改错或者误删了表和HQL脚本,无处可恢复,工头要求我写一个可以定时全库备份建表语句的脚本(并且要带有定时删除14天之前的功能)。经过了长久且艰辛得行为斗争之后,这个脚本终于竣工了😄😄😄😄

直接看成果

#!/bin/bash
cd /cib/dm/hive_table
rm -f tablist* test.fin

#use hive export table name
hive -e "use awpdb; show tables;" | grep -v 'WARN' > /cib/dm/hive_table/tablist
split -l 400 tablist -d -a 2 tablistSplit*

for i in `ls tablistSplit*`
do
	nohup sh crontab_exp_tab.sh ${i} ${i}.out >> ${i}.log 2>&1 &
done

echo 'test' > /cib/dm/hive_table/test.fin
while true
do
	fin=`ls /cib/dm/hive_table/*.fin | wc -l`
	ori=`ls /cib/dm/hive_table/tablistSplit*| grep -Ev -e tablitSplit.*log -e tablistSplit.*out -e tablistSplit.*fin | wc -l`
	if [ ${fin} -gt ${ori} ]
	then
		break;
	else
		sleep 100;
	fi
done
echo "============Export Finished...============"

cd /cib/dm
tar -zcf /cib/dm/backup_table/"`date +%Y%m%d`.tar.gz" hive_table/ sql_shell/

#delete file of 14 days ago
find /cib/dm/backup_table/ -mtime +13 -name "*tar.gz" -exec rm -rf {} \;
echo "============ALL Finished...============"

此脚本中 crontab_exp_tab.sh 脚本,就是hive的循环导出建表语句的脚本,其中${i} 为要读取的文件,文件中为所有的表名;${i}.out 为输出文件,即是整个${i} 所包含的表的建表语句。

crontab_exp_tab.sh 脚本如下:

#!/bin/bash
cat ${i} | while read tab_name
do
hive -e "use awpdb; show create table ${tab_name};" >> ${i}.out
done

touch ${i}.fin

然后将这个脚本放在 crontab 任务中即可

这就是完整的工程。

第一个脚本中变量 ${ori} 的处理有些复杂,主要的原因是文件的名字命名问题,我对这些文件的命名都近似;所以为了判断是否已经完全导出建表语句的的步骤就比较麻烦。各位砖友可以修改一下名字,就可以简化了。

脚本为刚刚接触大数据的时候写的,如果有砖友有更优的,请留言分享一下,多谢多谢


博文均为原创,转载请注明出处!

有错请联系讨论

        ^~^

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值