我是靠谱客的博主 忐忑时光,最近开发中收集的这篇文章主要介绍解决因hive表锁表,导致无法进行查询、删除等操作问题(实测,已解决),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

     正常登录hive数据库 发现其中test表无法操作,连基本的desc test命令都处于卡机状态,查询之后发现,原来是表被锁住了。因此,结合网上查询的一些方法,进行总结如下:

// 报错
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. 
Current transaction manager does not support explicit lock requests.Transaction manager:org.apache.hadoop.hive.ql.lockmgr.DbTxnManager

 

//   1 查询是否锁表:

 hive> show locks ;



//   2 发现表:test 被锁



//   3 临时解决办法

hive> unlock table test;   //亲测这个命令基本没啥用,表依然处于无法操作状态,但是可以试试

hive> unlock table test partition(dt='2019-05-05'); //解锁分区锁命令可以用这个



//   4 关闭锁机制:

hive> set hive.support.concurrency=false; // 默认为true

/** 注:亲测这条命令暂时有用,运行之后可以对之前锁住的表进行查看、删除、修改等操作,但是 show locks 发现,之前被锁的表依然处于被锁状态 */



//   5 终极解决办法 直接找到 hive-site.xml 配置文件
 
[hadoop@hadoop01 ~]$ find / -name hive-site.xml

[hadoop@hadoop01 conf]$ vi hive-site.xml

// 追加

<property>
   <name>set hive.txn.manager</name>
   <value>org.apache.hadoop.hive.ql.lockmgr.DummyTxnManager</value>
</property>

------------------------------------------------
注:hive-site.xml中如有下列配置(可以不配置,因为默认为true)一定设置为true,如果设置成false则会报错!!!:

<property>
   <name>set hive.support.concurrency</name>
   <value>true</value>
</property>
------------------------------------------------

//   6 修改完hive-site.xml配置,保存退出。重新登录hive:

hive> use test_db;
hive> show tables;
test
test_tb

hive> drop table test;
hive> show tables;
test_tb

可以发现之前被锁的test已经可以实现删除操作。



 

如果底层元数据放在mysql数据库,也可以参考下列博文:

https://blog.csdn.net/qq_27493503/article/details/80892454 

最后

以上就是忐忑时光为你收集整理的解决因hive表锁表,导致无法进行查询、删除等操作问题(实测,已解决)的全部内容,希望文章能够帮你解决解决因hive表锁表,导致无法进行查询、删除等操作问题(实测,已解决)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部