Hive 解锁操作
之前使用Hive,出现过一种情况:在代码正在执行insert into或insert overwrite时,中途手动将程序停掉,会出现卡死情况,只能执行查询操作,而drop insert操作均不可操作,无论执行多久,都会保持卡死状态,问同事有人遇到过,但是他的解决办法是……把表名换一个……
后来废了九牛二虎之力,终于找到了一篇靠谱的博客,是说hive表被锁,需要解锁后,方可操作。
hive锁
这两篇文章解决了当时没有分区表的锁问题,但是……前几天,问题又来了,在etl过程中,由于全表全量覆盖,由于各种原因,没有按时操作成功,那么在使用这张表的时候就会出现表被锁,卡死状态,若是关键业务表,那么相关业务任务均会受到牵连。后,但是问题是,之前锁的都是整张表,而此次死锁还包括分区shared锁,之前并没有看到过,百度了一通,一条分区相关解锁的结果都没有找到,最后……求助Google,庆幸的是,真的有结果,提供了解锁分区锁的方法:
Hive Unlock All Partitions
unlock table your_table partition(dt='2014-04-01');
Hive drop table table_name一直卡死状态
查看数据库的自读编码集
use hive;
show variables like '%char%';
改变hive元数据存储数据库的字符编码集;
alter database hive character set latin1;