猜测在蜂巢中启用ACID是一条孤独的路线。我发现很难找到解决方案。
此查询也与我下面的查询类似。
Hive table does not respond to select query. ACID enabled
错误:
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