hadoop中使用crontab调度检查前置任务是否已经结束的返回源代码和相关意义是什么?
如果前置任务是hive任务,那么结束标志通常是一个hive表产生了特定分区,我们只需要检查这个分区是否存在就可以了。有个问题需要注意的是,可能在hive任务执行过程中分区已经产生,但任务没有完全结束前数据还没有写完,这个时候启动后续任务是不正确。解决办法就是在任务结束时为当前表添加一个空的“标志分区”,比如原来的分区是“pt=20170921”,我们可以添加一个空的分区“pt=20170921.done”(分区字段的类型为string时可用),或者“pt=-20170921”(分区字段的类型为int时可用)。然后,crontab调度的后置任务需要检查这个“标志分区”是否存在。
function log_info()
{
if [ "$LOG_LEVEL" != "WARN" ] && [ "$LOG_LEVEL" != "ERROR" ]
then
echo "`date +"%Y-%m-%d %H:%M:%S"` [INFO] ($$)($USER): $*";
fi
}
function check_partition() {
log_info "function [$FUNCNAME] begin"
#table,dt
temp=`hive -e "show partitions $1"`
echo $temp|grep -wq "$2"
if [ $? -eq 0 ];then
log_info "$1 parition $2 exists, ok"
return 0
else
log_info "$1 parition $2 doesn't exists"
return 1
fi
log_info "function [$FUNCNAME] end"
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。