hive鎖的問題

hive鎖的問題

最近在insert into 插入數據的時候遇到了hive鎖表的問題,下面是報錯信息,原因就是一張hive的臨時表被鎖造成報錯。
在這裏插入圖片描述
1.Hive中定義了兩種鎖的模式:
共享鎖(S)和排它鎖(X),顧名思義,多個共享鎖(S)可以同時獲取,但是排它鎖(X)會阻塞其它所有鎖。

如果select一張表,這張表則會進入shared模式,增加、插入、刪除、修改數據和修改表名等操作都會在shared鎖被釋放之後再執行,會一直等待。

如果插入、刪除、修改數據則進入Exclusive鎖模式,進入排他鎖模式之後不允許增刪改操作,會報錯。
2.查看錶被鎖的情況:
show locks table_name;
3.解鎖
a.unlock table table_name; – 解鎖表
b.unlock table table_name partition(dt=‘2020-06-27’); – 解鎖某個分區
c.關閉鎖機制:set hive.support.concurrency=false; 默認爲true
d.在報錯的sql中加入下列語句:
set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DummyTxnManager;
e.終極解決辦法 直接找到 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>

4.注意:
(1).表鎖和分區鎖是兩個不同的鎖,對錶解鎖,對分區是無效的,分區需要單獨解鎖
(2).hive-site.xml中如有下列配置(可以不配置,因爲默認爲true)一定設置爲true,如果設置成false則會報錯!!!

<property>
   <name>set hive.support.concurrency</name>
   <value>true</value>
</property>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章