hive lock table

查看数: 37083 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2014-11-9 11:02

正文摘要:

场景描述: 有N个表的数据需要load进入hive,命名import_table_name,然后检查表table_name如果存在则删除,在删除表table_name时,报错“conflicting lock present for user@tablename mode EXCLUSIVE”,导致后续无 ...

回复

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-11 18:06:46
十分感谢“desehawk”的帮助,问题已经解决,重启了下hive。锁的由来可能是我们在测试的时候,没有执行完毕,导致锁住,持续观察中,如果后续由问题,将持续更新,方便其他兄弟姐妹解决。
mongol 发表于 2014-11-11 17:00:49
desehawk 发表于 2014-11-11 16:16
这个就不清楚了,可以试试,不管什么方案,能够解决问题,就是好方案

十分感谢。

我把表drop掉之后,锁竟然还在......
desehawk 发表于 2014-11-11 16:16:44
mongol 发表于 2014-11-11 15:32
是否是我alter   rename 之后锁就一直存在呢?
这个就不清楚了,可以试试,不管什么方案,能够解决问题,就是好方案
mongol 发表于 2014-11-11 15:32:56
是否是我alter   rename 之后锁就一直存在呢?
mongol 发表于 2014-11-9 11:04:51
请各位大神解救,针对这个问题的解决办法还有其他办法,比如导入数据时先直接删掉table_name,这样后续就不需要rename,因为现在需要,所以请不要提出这类解决方案,如果您能帮助解决,十分感谢!
关闭

推荐上一条 /2 下一条