在hive上,检测分区是否产生的方法很简单:
show partitions db.table
数据库名.表名即可
当然也可以以如下的方式展开:
use db;
show parttions table
很多时候,我们生成分区的程序和后面根据分区成功进行的其他操作的程序并不是在一起的,如果分区不成功就继续下面的任务,会导致最后的结果不正确或是不存在。那如何检测你想要的分区是否生成了呢?我们可以写一个shell脚本。
function check_partition(){
#table,dt
temp=`hive -e "show partitions $1"`
echo $temp|grep -wq "$2"
if [ $? -eq 0 ];then
echo "ok"
return 0
else
return 1
fi
}
传参的时候只要传递表名和所要检测的分区名即可
当有多个分区的时候,比如有day和hour两个分区,大同小异
function check_partition_hm(){
#table,dt,hour
temp=`hive -e "show partitions $1"`
echo $temp|grep -wq "day=$2/hour=$4"
if [ $? -eq 0 ];then
echo "ok"
return 0
else
return 1
fi
}
注意:要标注好day=以及hour=,因为有时候昨天6点的分区生成,今天5点的分区也生成,要是分开grep的话,会得到今天6点的分区已经生成的结果,so~