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'='\001');"
}


#指定一个数据库,查询出所有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
复制代码

 

posted @   Mars.wang  阅读(1375)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示