Hive 开启事务ACID 运行删和改操作
事务表的适用场景
对于数仓中的行级数据更新删除需求比较频繁的,可以考虑使用事务表。
但平常的hive表并不建议使用事务表。因为事务表的限制很多,加上由于hive表的特性,也很难满足高并发的场景。另外,如果事务表太多,并且存在大量的更新操作,metastore后台启动的合并线程会定期的提交MapReduce Job,也会一定程度上增重集群的负担。
结论: 除非有非常迫切的行级更新需求,又只能用hive表来做,才需要去考虑事务表。
注意事项
不支持 BEGIN、COMMIT、ROLLBACK 等语句,所有的语句都是自动提交
仅支持ORC格式
设置开启事务
1、配置Hive支持事务(Hive 2.0版)
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 运行删和改操作