hive 判断分区是否存在_hive 分区中存在中文导致表删除不掉处理方案

在项目中遇到Hive表存在中文分区导致无法删除的问题。通过查看分区结构、尝试删除分区和HDFS文件、清理MySQL元数据等步骤,最终成功解决表删除不掉的困境。参考了williamdev的文章详细步骤。
摘要由CSDN通过智能技术生成

在实际项目中,修改原来的表结构,增加一个交易类型字段作为组合分区,由于是BI展示的表,交易类型实际存储的是中文,而且是已经投入使用的表,不能重新修改表名。

 1.查看表分区结构如下:

show partitions ads_mk_coupon_receive_use_info;

8fa46772d3c062f570d774b4138f8efa.png

2.尝试通过删表,然后一直卡着没有任何反应,然后删除第一个分区,显示是成功的,但是结果并没有删除掉:

alter table ads_mk_coupon_receive_use_info drop partition(ds_dt='2020-12-01');

5239ab4c789216327759ea833734df24.png

3.删除所有的表下的hdfs文件,然后再删除表还是没有反应

 Hadoop fs -rm -R 路径

4.删除MYSQL元数据

4.1 查看表ID

SELECT * FROM TBLS WHERE TBL_NAME='ads_mk_coupon_receive_use_info';

92ccb832855fd5dee7ea3d03a2b508c6.png

4.2 查看分区

 select * from PARTITIONS t where t.tbl_id='7488';

845b76958f891810ef7d17542e1d2141.png

4.3 查看分区对应的值

select * from PARTITION_KEY_VALS where part_id=100252;

641e95de670580cd7e7a70c290a4bfbf.png

4.4 删除元数据

delete from PARTITION_KEY_VALS where part_id=100252;delete from PARTITION_PARAMS where  part_id =100252;delete from PARTITIONS where tbl_id=7488;

5.重新查看分区:

 show partitions ads_mk_coupon_receive_use_info;

>特别感谢williamdev https://blog.csdn.net/fg654748861/article/details/46123887

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值