hive - Hive ACID 表锁死锁永不过期
问题描述
猜测在蜂巢中启用 ACID 是一条孤独的路线。我发现很难找到解决方案。
这个查询也类似于我下面的查询。
错误:
FAILED: Error in acquiring locks: Lock acquisition for LockRequest(component:[
LockComponent(type:SHARED_READ, level:TABLE, dbname:db1, tablename:table1, operationType:INSERT, isAcid:true),
LockComponent(type:SHARED_READ, level:TABLE, dbname:db1, tablename:table2, operationType:SELECT),
LockComponent(type:SHARED_READ, level:TABLE, dbname:db1, tablename:table3, operationType:SELECT)],
txnid:10140, user:userid, hostname:host.xyz.com, agentInfo:userid_20190707082237_ff87ff1b-bcc2-466d-b5db-e5781ff1f2ef)
timed out after 5503292ms. LockResponse(lockid:22084, state:WAITING)
有几个月的锁存在。即使在重新创建表之后,这些锁仍然存在。这可能是错误的原因。但我不确定。因为有时同样的失败查询也会起作用。它令人困惑。
我使用 R 中的系统命令来运行如下所示的配置单元查询。因此,对于以下设置的每个查询也会执行
acid <- "set hive.support.concurrency=true;
set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
set hive.enforce.bucketing=true;
set hive.exec.dynamic.partition.mode=nostrict;
set hive.compactor.initiator.on=true;
set hive.compactor.worker.threads=1;"
hql <- paste(acid,hql)
response <- system(paste0("hive -S -e ","\"", hql,"\""," 2>&1"), wait = TRUE,intern=TRUE)
select count(*)
对于像我这样使用的少数查询tez
,因为查询运行没有问题并且速度更快。并非所有查询都可以使用tez
,因为它会产生一些其他错误。
某些Drop table
查询会导致锁定超时。但是在Drop table
不启用ACID
属性的情况下同样可以正常工作。
我想我可以正确解释。我知道这是多个问题。但主要问题是由于锁而无法执行查询。并且也无法杀死锁。
蜂巢版本
Hive 2.1.1-mapr-1803
Subversion git://9281ba475c39/root/opensource/mapr-hive-2.1/dl/mapr-hive-2.1 -r ef09bc4b4286a3f53947196a79949620b006344e
Compiled by root on Mon Apr 2 15:49:32 UTC 2018
From source with checksum e47dbe8554cd78b7254c1856508175bd
解决方案
推荐阅读
- python - 如何在 Python 中从文本文件中提取表格
- javascript - 使3个数组相互对应,第一个为对象名称
- python - JSON 到 CSV / 如何修复 _csv.Error: iterable expected, not NoneType
- azure - 如何设置两个都使用 https 端口的微服务?
- go - 尽管存在目标,但始终执行 Makefile 规则
- solr - 如何实施 Solr 重复数据删除?签名返回 0000000000000000
- c# - Xamarin:如何从 Xamarin iOS 项目的 NSUrlSession 任务将数据返回到共享项目?
- google-cloud-platform - 无法分配 iam.serviceAccounts.signBlob 权限
- angular - min date 不会禁用 ionic 3 中的过去日期
- ios - 如何“有条件地”将来自 2 个或多个 textField 的文本加入到单个 textView 中?