分享

hive lock table

mongol 发表于 2014-11-9 11:02:26 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 7 37082
场景描述:
有N个表的数据需要load进入hive,命名import_table_name,然后检查表table_name如果存在则删除,在删除表table_name时,报错“conflicting lock present for user@tablename mode EXCLUSIVE”,导致后续无法rename import_table_name to table_name。这个锁从网上查询临时解决办法是:set hive.support.concurrency=false; 但是程序里是在凌晨2点左右跑的,不能人员一直在啊,请各位大神指教,谢谢。

已有(7)人评论

跳转到指定楼层
desehawk 发表于 2014-11-9 12:52:08
mongol 发表于 2014-11-9 11:04
请各位大神解救,针对这个问题的解决办法还有其他办法,比如导入数据时先直接删掉table_name,这样后续就不 ...

这里面有两种解决方案:
第一种
能手工设置,那么也可以使用程序设置,也就是说你可以把你的手工命令,想办法嵌入到程序中。
当然这里也有两种办法
1.对你当前操作的表解锁
2.就是你所采用的临时的办法
建议使用这种办法

至于如何实现,这里给些参考

下面是对hive command对所的操作,所以你既然能够让sql定时执行,所以让下面命令执行也是很容易的事情。
操作的锁获取如下:
Hive CommandLocks Acquired
select .. T1 partition P1S on T1, T1.P1
insert into T2(partition P2) select .. T1 partition P1S on T2, T1, T1.P1 and X on T2.P2
insert into T2(partition P.Q) select .. T1 partition P1S on T2, T2.P, T1, T1.P1 and X on T2.P.Q
alter table T1 rename T2X on T1
alter table T1 add colsX on T1
alter table T1 replace colsX on T1
alter table T1 change colsX on T1
alter table T1 add partition P1S on T1, X on T1.P1
alter table T1 drop partition P1S on T1, X on T1.P1
alter table T1 touch partition P1S on T1, X on T1.P1
*alter table T1 set serdeproperties *S on T1
*alter table T1 set serializer *S on T1
*alter table T1 set file format *S on T1
*alter table T1 set tblproperties *X on T1
drop table T1X on T1





第二种
这是由于并发,导致的死锁,所以按照顺序来导数据就不会发生这种问题了。但是这种可能不适合你们。




回复

使用道具 举报

mongol 发表于 2014-11-9 11:04:51
请各位大神解救,针对这个问题的解决办法还有其他办法,比如导入数据时先直接删掉table_name,这样后续就不需要rename,因为现在需要,所以请不要提出这类解决方案,如果您能帮助解决,十分感谢!
回复

使用道具 举报

mongol 发表于 2014-11-11 15:32:07
desehawk 发表于 2014-11-9 12:52
这里面有两种解决方案:
第一种
能手工设置,那么也可以使用程序设置,也就是说你可以把你的手工命令, ...

首先十分感谢,您的解答,对我有很大帮助。

我在hive下执行了一下show locks;
1.png
证明锁一直在。

这个表是有4个分区,在从oracle导入到hive里时,每个分区split 20,导入的表名是import_tf_f_user_product;然后判断“tf_f_user_product”表是否存在,存在则drop,drop的时候提示“onflicting lock present for user@tablename mode EXCLUSIVE”这个错误。处理办法:临时解锁,后执行alter table import_tf_f_user_product to tf_f_user_product;后续就可以了。


针对以上问题,是否有补充解答?

回复

使用道具 举报

mongol 发表于 2014-11-11 15:32:56
是否是我alter   rename 之后锁就一直存在呢?
回复

使用道具 举报

desehawk 发表于 2014-11-11 16:16:44
mongol 发表于 2014-11-11 15:32
是否是我alter   rename 之后锁就一直存在呢?
这个就不清楚了,可以试试,不管什么方案,能够解决问题,就是好方案
回复

使用道具 举报

mongol 发表于 2014-11-11 17:00:49
desehawk 发表于 2014-11-11 16:16
这个就不清楚了,可以试试,不管什么方案,能够解决问题,就是好方案

十分感谢。

我把表drop掉之后,锁竟然还在......
回复

使用道具 举报

mongol 发表于 2014-11-11 18:06:46
十分感谢“desehawk”的帮助,问题已经解决,重启了下hive。锁的由来可能是我们在测试的时候,没有执行完毕,导致锁住,持续观察中,如果后续由问题,将持续更新,方便其他兄弟姐妹解决。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条