hive ACID事务得应用场景
Hive的ACID语义可以完成以下使用场景:
1、流数据的接入。许多用户都使用 Apache Flume, Apache Storm, or Apache Kafka 将流式数据导入Hadoop集群。 这些工具都是每秒百万行级的数据写入,而Hive只能每十五分钟到一个小时添加一次分区。快速的增加分区会对表中的分区数量形成压力。当然可以事先创建好分区再将数据导入,但这样会引起脏读,而且目录下生成的小文件会对namenode造成很大的压力。而新特性可以很好的解决上述问题。
2、减少维度的变化。 减少多维表的变化。
3、数据的更新。INSERT, UPDATE。
4、通过SQL MERGE 批量的更新。
限制条件:
1、默认事务是关闭的,需要设置开启。(hive3.0之后默认创建表就是事务表)
2、表必须是分桶表。
3、目前只支持ORC 的文件格式。参考:ORC File Format存储格式 和 ORC file format
4、BEGIN, COMMIT, ROLLBACK 暂时不支持,所有操作自动提交。
5、必须这是事务管理器 org.apache.hadoop.hive.ql.lockmgr.DbTxnManager ,否则事务表无法工作。
6、目前支持快照级别的隔离。就是当一次数据查询时,会提供一个数据一致性的快照。
7、LOAD DATA. 语句目前在事务表中暂时不支持。