hive表锁定问题(Locks on the underlying objects cannot be acquired)

大数据 专栏收录该内容
17 篇文章 0 订阅

一、删除表失败

1.1 描述?

创建了一张临时表但是在插入数据后删除表时报错
在这里插入图片描述

1.2 为什么会产生?

因为在hive0.7版本之后开始支持并发,线上环境默认是用zookeeper做hive的锁管理,Hive开启并发功能的时候自动开启锁功能。

1.3 如何解决?

set hive.support.concurrency=false;
drop table table_name;

1.4 排查过程

1.4.1.查看表是否被锁定

SHOW LOCKS <TABLE_NAME>;
SHOW LOCKS <TABLE_NAME> extended;
SHOW LOCKS <TABLE_NAME> PARTITION (<PARTITION_DESC>);
SHOW LOCKS <TABLE_NAME> PARTITION (<PARTITION_DESC>) extended;

!–返回结果,会告知是否产生锁–

1.4.2.解决表被锁死问题

set hive.support.concurrency=false; 默认为true
!--或者--
unlock table table_name;

1.5 详解原理

hive 目前主要有两种锁,SHARED(共享锁 S)和 Exclusive(排他锁 X)。共享锁 S 和 排他锁 X 它们之间的兼容性矩阵关系如下:
在这里插入图片描述
总结起来就是:
1)查询操作使用共享锁,共享锁是可以多重、并发使用的
2)修改表操作使用独占锁,它会阻止其他的查询、修改操作
3)可以对分区使用锁。
以下情况会出发锁,以及它的类型和锁定范围如下:
在这里插入图片描述

  • 2
    点赞
  • 2
    评论
  • 4
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页

打赏

叁木-Neil

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值