Transactions in Hive

Hive 0.14中提供了行级的事务,目前支持 insert ,delete和update。

目前有很多限制,比如支持ORC格式的文件,并且该表需要有桶

开启事务

在命令行中执行以下语句

hive>set hive.support.concurrency = true;

hive>set hive.enforce.bucketing = true;

hive>set hive.exec.dynamic.partition.mode = nonstrict;

hive>set hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;

hive>set hive.compactor.initiator.on = true;

hive>set hive.compactor.worker.threads = a positive number on at least one instance of the Thrift metastore service;

创建测试表格

CREATE TABLE college(clg_id int,clg_name string,clg_loc string) clustered by (clg_id) into 5 buckets stored as orc TBLPROPERTIES('transactional'='true');
表格名‘college’ ,字段‘clg_id, clg_name, clg_loc’ 。以‘clg_id’列进行分桶 ,表格格式’orc‘ 最后指定表格属性TBLPROPERTIES 为‘transactional’=’true’ ### 插入数据
INSERT INTO table college values(1,'nec','nlr'),(2,'vit','vlr'),(3,'srm','chen'),(4,'lpu','del'),(5,'stanford','uk'),(6,'JNTUA','atp'),(7,'cambridge','us');

更新数据

UPDATE college set clg_id = 8 where clg_id = 7;
文档说不能更新桶列,不过我执行的时候没问题,估计新版本改进了
UPDATE college set clg_name = 'IIT' where clg_id = 6;

删除数据

delete from college where clg_id=5;

 

打赏支持:支付宝/微信。如果你觉得我的文章对你有所帮助,可以打赏我哟。