文章目录
1. 背景
Hive设计之初不支持事务。因为Hive的核心目标时将已经存在的结构化数据文件映射成为表,然后提供基于表的SQL分析处理,是一款面向分析的工具,且映射的数据通常存储于HDFS上,而HDFS是不支持随机修改文件数据的。这个定位意味着早期的HiveSQL语法中没有update、delete操作的,只有select查询分析操作,所以没有支持事务的说法。
2. Hive事务的局限性
- 尚不支持begin,commit,和rollback,所有语言操作都是自动提交的。
- 仅支持ORC文件格式(stored as orc)
- 默认情况下事务配置为关闭,需要配置参数开启使用
- 表必须是分桶表才可以使用事务功能
- 表参数transactional必须为true
- 外部表不能称为ACID表,不允许从非ACID会话读取/写入ACID表。