我在hive中创建了表:
CREATE TABLE test_table (COL1 string, COL2 string, COL3 string, COL4 string) CLUSTERED BY(COL2) INTO 4 BUCKETS STORED AS ORC tblproperties("transactional"="true");
现在尝试在hive提示符中使用putty进行查询:
select * from test_db.test_table;
此操作失败,并显示以下消息:
FAILED:SemanticException [错误10265]:不允许此命令 在具有非ACID事务的ACID表test_db.test_table上 经理。命令失败:null
请帮我解决此错误。
答案 0 :(得分:8)
Hive事务管理器必须设置为org.apache.hadoop.hive.ql.lockmgr.DbTxnManager
才能使用ACID表。
SET hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
此外,设置这些属性以启用事务支持
客户端
SET hive.support.concurrency=true;
SET hive.enforce.bucketing=true;
SET hive.exec.dynamic.partition.mode=nonstrict;
服务器端(Metastore)
SET hive.compactor.initiator.on=true;
SET hive.compactor.worker.threads=1;
注意:在hive-site.xml
中添加这些属性以永久设置它们。