开发者社区> 问答> 正文

hadoop中使用crontab调度检查前置任务是否已经结束的返回源代码和相关意义是什么?

hadoop中使用crontab调度检查前置任务是否已经结束的返回源代码和相关意义是什么?

展开
收起
游客yzrzs5mf6j7yy 2021-12-06 08:09:06 317 0
1 条回答
写回答
取消 提交回答
  • 如果前置任务是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"
    }
    
    
    
    2021-12-06 08:09:24
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《构建Hadoop生态批流一体的实时数仓》 立即下载
零基础实现hadoop 迁移 MaxCompute 之 数据 立即下载
CIO 指南:如何在SAP软件架构中使用Hadoop 立即下载

相关实验场景

更多