我的配置单元查询 Truncate table tablename
花费了太多时间。表定义定义了这些属性
CLUSTERED BY(field1) INTO 2 BUCKETS
STORED AS ORC TBLPROPERTIES('transactional'='true');
表中的数据可能只有 20-30k 行。
已启用 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;
久等了。它抛出如下错误
FAILED: Error in acquiring locks: Lock acquisition for
LockRequest(component:[LockComponent(type:EXCLUSIVE, level:TABLE, dbname:db1,
tablename:tbl1, operationType:NO_TXN, isAcid:true)], txnid:0, user:xyz,
hostname:host123, agentInfo:xyz_20190310220349_62d794b8-3166-4049-b9f9-646e40f1d344) timed out after 5503335ms. LockResponse(lockid:5563,
state:WAITING)
但没有其他用户或作业正在使用此表。从而等待锁。等待的其他原因可能是什么?
还在截断之前执行插入查询(针对特定条件)。
最佳答案
由于没有其他答案,我想提一下,与 Truncate< 相比,
。 Delete from table
在我的情况下在通常时间完成(花费 2 分钟,更重要的是没有锁定错误)/
关于hadoop - Hive 截断表需要太多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55094741/