Hive更新查询

时间:2016-03-29 15:49:23

标签: hive

我已设置了需要在配置单元中设置的所有参数以使用事务。

set hive.support.concurrency=true;
set hive.enforce.bucketing=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
set hive.compactor.initiator.on=true;
set hive.compactor.worker.threads=0;

使用以下命令创建表

CREATE TABLE Employee(Emp_id int,name string,company string,Desg string) clustered by (Emp_id) into 5 buckets stored as orc TBLPROPERTIES(‘transactional’=’true’);

使用以下命令

在hive表中插入数据
INSERT INTO table Employee values(1,’Jigyasa’,’Infosys’,’Senior System Engineer’), (2,’Pooja’,’HCL’,’Consultant’), (3,’Ayush’,’Asia Tours an travels’,’Manager’), (4,’Tarun’,’Dell’,’Architect’), (5,’Namrata’,’Apolo’,’Doctor’);

但在更新数据时

Update Employee set Company=’Ganga Ram’ where Emp_id=5;

我收到以下错误消息

  

FAILED:SemanticException [错误10294]:尝试更新或删除不支持这些操作的unsingtransaction管理器。

1 个答案:

答案 0 :(得分:0)

旧版本的Hive有一个错误 set hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;在CLI不生效。

你可以通过运行“set hive.txn.manager”来检查这一点,它将打印当前值。

最安全的方法是在hive-site.xml中设置它。