hive存在两种锁,共享锁Shared (S)和互斥锁Exclusive (X)
其中只触发s锁的操作可以并发的执行,只要有一个操作对表或者分区出发了x锁,则该表或者分区不能并发的执行作业。
-- 加锁 lock table dws_prem_m_bak_20180630 exclusive ; -- 查看锁 show locks dws_prem_m_bak_20180630 extended; -- 解锁 unlock table dws_prem_m_bak_20180630 ; -- 如果锁表无法操作查询及ddl select * from dws_prem_m_bak_20180630;
-- 在hue中通过mr执行过程中,点取消,导致锁分区 -- 通过过spark重跑2018-05-01分区无法插入数据 -- 插入其它分区可正常插入 -- 查看分区不存在 show partitions table_name; -- 查看是否锁表 show locks table_name; -- 发现表的2018-05-01分区被锁 db_name@table_name@day=2018-05-01 Exclusive (X) -- 解锁表无效 unlocks table table_name; -- 解锁表分区无效,报错无该分区 unlocks table table_name partition(day='2018-05-01'); -- 改表名,再改回来,失败,执行不动 alter table table_name rename to table_name_bak; -- 增加分区,成功 alter table table_name add partition(day='2018-05-01'); -- 再次解锁分区,成功 unlocks table table_name partition(day='2018-05-01');