hive truncate table 阻塞
一、问题
1.hive脚本中truncate table时,进入阻塞状态。
2.日志截图:
3.脚本内容节选
hive -e "truncate table aero_test_3u.flight;"
二、解决
1.具体操作
设置hive.lock.mapred.only.operation属性为true再truncate。
改完的脚本如下所示:
hive -e "set hive.lock.mapred.only.operation=true; truncate table aero_test_3u.flight;"
2.原理
(详细请看https://cwiki.apache.org/confluence/display/Hive/Locking)大概意思,要truncate的表正在被其他进程锁着,当前进程无法获得锁。
设置hive.lock.mapred.only.operation为ture,就是说只有创建至少一个mapreduce的sql操作才会创建锁,而其他类似truncate、drop的操作是不需要获取锁的。
参考链接:
一篇参考博客
官方文档(点击后搜索(to control whether or not only do lock on queries)):
Apache Hive 官方文档