hadoop - Hive 截断表需要太多时间

标签 hadoop hive

我的配置单元查询 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/

相关文章:

hadoop - 如何使用多定数法在Hive表中插入CSV文件

java - Hive 表计数通过 java JDBC 驱动程序显示为 0

hadoop - Hive:如何比较具有复杂数据类型的 WHERE 子句中的两列?

hadoop - MapReduce 上的 HyperLogLog 正确性

java - Hadoop 工作依赖性与分布式的旧工作依赖性发生冲突

database - 关于 hadoop、hbase 等非 sql 数据库的帮助

bash - 使用 unix grep 指定时间范围

java - 如何在 Hadoop WebHDFS 中启用 OAuth2

xml - 解析 XML 并存储在 Hive 表中

hadoop - 只能复制到 0 个节点而不是 minReplication (=1)。有 2 个数据节点正在运行,并且没有节点被排除在此操作中