场景:
在执行insert into或insert overwrite任务时,觉得hive速度有点慢,中途手动将程序停掉,改成了spark的引擎继续跑数,然后出现卡死情况(无法提交MapReduce),只能执行查询操作,而drop insert操作均执行不成功,无论执行多久,都会保持卡死状态。
原因:
hive表被锁或者某个分区被锁,需要解锁。hive存在两种锁,共享锁Shared (S)和互斥锁Exclusive (X)。
其中只触发s锁的操作可以并发的执行,只要有一个操作对表或者分区出发了x锁,则该表或者分区不能并发的执行作业,
表锁和分区锁是两个不同的锁,对表解锁,对分区是无效的,分区需要单独解锁。。
操作:
show locks table_name; --查看表被锁的情况
unlock table table_name; – 表解锁
unlock table table_name partition(day=‘2018-08-16’); – 某个分区解锁
lock table dws_prem_m_bak_20180630 exclusive ; – 锁表
当分区不存在或是没数据分区被锁上,锁解不开的情况发生时,需要添加分区,然后解锁:
01、alter table table_name add partition (day=‘2018-08-16’);
02、unlock table table_name partition(day=‘2018-08-16’);
转载: https://zhuanlan.zhihu.com/p/42204989