您的位置:首页 > 大数据

配置Hive支持事务——让hive支持行级insert、update、delete操作

2018-03-01 15:35 603 查看

配置Hive支持事务——让hive支持行级insert、update、delete操作

Hive从0.14版本开始支持事务和行级更新,但缺省是不支持的,需要一些附加的配置。要想支持行级insert、update、delete,需要配置Hive支持事务。

二、配置Hive支持事务(CDH5.9版本上修改)

1. 在hive-site.xml文件中添加如下配置项

hive-site.xml的文件位置位于:/etc/hive/conf.clouders.hive/目录下
<property>
<name>hive.support.concurrency</name>
<value>true</value>
</property>
<property>
<name>hive.exec.dynamic.partition.mode</name>
<value>nonstrict</value>
</property>
<property>
<name>hive.txn.manager</name>
<value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
</property>
<property>
<name>hive.compactor.initiator.on</name>
<value>true</value>
</property>
<property>
<name>hive.compactor.worker.threads</name>
<value>1</value>
</property>


添加Hive元数据(使用mysql存储)

INSERT INTO NEXT_LOCK_ID VALUES(1);
INSERT INTO NEXT_COMPACTION_QUEUE_ID VALUES(1);
INSERT INTO NEXT_TXN_ID VALUES(1);
COMMIT;


说明:初始时这三个表没有数据,如果不添加数据,会报以下错误:

org.apache.hadoop.hive.ql.lockmgr.DbTxnManager FAILED: Error in acquiring locks: Error communicating with the metastore

三、测试

1. 启动hadoop集群和mysql

登录Cloudera Manager管理控制台执行Hive服务的操作,单击:”hive”——>“操作”——>“重启”即可



2. 建立测试表

create table t1(id int,name string)
clustered by (id) into 8 buckets
stored as orc tblproperties('transactional'='true');


说明:建表语句必须带有into buckets子句和stored as orc TBLPROPERTIES (‘transactional’=’true’)子句,并且不能带有sorted by子句。

3.测试insert、update、delete

insert into t1 values (1,'aaa');
insert into t1 values (2,'bbb');
update t1 set name='ccc' where id=1;
delete from t1 where id=2;


执行结果分别如图1-3所示

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  大数据开发