hive表批处理

对hive中的表进行批量处理,如下是一个简单的脚本

#给定一个hive数据库名,生成它的所有表的create SQL语句,并导出到文件
create_fun(){
hive -e "show create table $1.$2">>$3
}

#显示一个表中所有的分区
show_partitions(){
hive -e "show partitions $1.$2 ;">>$3
}

#将一个表中所有分区重命名
rename_partition(){
start_day=$3
end_day=$4

while [ ${start_day} -le ${end_day} ]
do
    day_int=`date  +"%Y%m%d" -d  "${start_day}"`
    day_str=`date  +"%Y-%m-%d" -d  "${start_day}"`
    hive -e "alter table $1.$2 PARTITION (dt='${day_int}') RENAME TO PARTITION (dt='${day_str}');"
    start_day=`date  +"%Y%m%d" -d  "${start_day} 1 days" `
done
}
#删除一个表中的分区
drop_partition(){
hive -e "alter table $1.$2 drop PARTITION (dt='$3')"
}

#更新一个hive表的列分隔符
modify_separator(){
hive -e "alter table $1.$2 set SERDEPROPERTIES('field.delim'='01');"
}


#指定一个数据库,查询出所有table,并对符合条件的table进行处理
database(){
basename=$1
mid_file=mid.txt
result_file=${basename}.txt
match=_ods
hive -e "use ${basename};show tables">${mid_file}
sed -i '/WARN/d' ${mid_file}
cat ${mid_file} |grep ${match} |while read line
do
    drop_partition ${basename} $line $2
done
rm -rf ${mid_file}
}


#program start #
database $1 $2
原文地址:https://www.cnblogs.com/wangbin2188/p/10002312.html