Hive ACID和事务表支持详解
一、ACID介绍 ACID就是常见数据库事务的四大特性:Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)。 在Hive 0.13之前,Hive支持 分区级别 上原子性、一致性、持久性,隔离性可以通过hive提供的锁机制来实现(通过zookeeper锁或者内存锁来 锁住一个分区的数据 )。 从Hive 0.13开始,Hive可以支持行级别上面的ACID语义了 。因此我们可以在有其他程序读取一个分区数据时往这个分区插入新的数据。 二、使用限制 不支持 BEGIN、COMMIT、ROLLBACK 等语句,所有的语句都是自动提交 仅支持ORC格式 事务的支持默认是关闭的,需要配置相关参数打开 表需要配置分桶,外部表不能设置成事务表,因为外部表的文件存储格式不在hive的管理之中。(因为Hive事务的实现主要依赖于表分桶的存储格式,如果表没分桶,那么表底下的文件就会很散乱,hive的事务机制无法有效的读取) 非 ACID 的会话不能读写ACID表,也就是说,需要在会话中手动set参数开启hive事务管理支持后才可以操作ACID表 目前仅支持快照隔离级别,不支持脏读、读已提交、可重复读、串行等隔离级别 现有的zk和内存锁和事务不兼容 使用oracle作为metastore数据库,以及设置了"datanucleus