最新消息:

Hive 开启事务ACID 运行删和改操作

分享 oba 46浏览 0评论

                Hive 开启事务ACID  运行删和改操作

事务表的适用场景

对于数仓中的行级数据更新删除需求比较频繁的,可以考虑使用事务表。

但平常的hive表并不建议使用事务表。因为事务表的限制很多,加上由于hive表的特性,也很难满足高并发的场景。另外,如果事务表太多,并且存在大量的更新操作,metastore后台启动的合并线程会定期的提交MapReduce Job,也会一定程度上增重集群的负担。

结论: 除非有非常迫切的行级更新需求,又只能用hive表来做,才需要去考虑事务表。

注意事项

不支持 BEGIN、COMMIT、ROLLBACK 等语句,所有的语句都是自动提交

仅支持ORC格式

设置开启事务

1、配置Hive支持事务(Hive 2.0版)

    hive.support.concurrency

    true

    hive.exec.dynamic.partition.mode

    nonstrict

    hive.txn.manager

    org.apache.hadoop.hive.ql.lockmgr.DbTxnManager

    hive.compactor.initiator.on

    true

    hive.compactor.worker.threads

    1

 

    hive.enforce.bucketing

    true

 

2、测试

–事务表  能更新的 必须是分桶的(可以分区) 存储为orc 的表并在属性中运行事务才可以

— 分区分桶表

CREATE  TABLE t2 (id INT, name STRING) PARTITIONED BY (country STRING, state STRING)

CLUSTERED BY (id) INTO 8 BUCKETS

STORED AS ORC TBLPROPERTIES (‘transactional’=’true’);

insert into t2 partition(country=’cn’,state=’sd’)  values(1,’ceshi’);

update t2

set name=’good’

where id=1;

delete from t2 where id =1;

转载请注明:OBA博客 » Hive 开启事务ACID 运行删和改操作

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址