Hive ACID v2
Hive3的ACID v2相比Hive2的ACID v1,对很多事务的特性进行了优化升级,使之更接近于关系型数据库。
使用ACID语义修改现有Hive表数据,包括insert, update, delete, merge
支持数据库四大特性, Atomicity, Consistency, Isolation, Durability
允许在使用长时间运行的分析查询同时进行并发更新。
使用MVCC(Multi-Version concurrency Control)架构。
1.创建ACID事务表
CREATE TABLE acid_crud(id int, value string)
STORED AS ORC
TBLPROPERTIES(
'transactional'='true',
'transactional_properties'='default');
2.支持合并
Minor compaction 将增量文件合并到较少的增量文件当中
Major compaction 将增量文件与基础数据合并
合并过程可以自动触发或者手动触发
合并不影响读写
3.ACID工具
SHOW COMPACTIONS
SHOW TRANSACTIONS
SHOW LOCKS
ABORT TRANSACTIONS
SQL兼容性
Hive3支持绝大多数的最新的SQL 2016标准。
https://cwiki.apache.org/confluence/display/Hive/Supported+Features:++Apache+Hive+3.1
约束和代理键
支持设置默认值
支持设置主键,外键
CREATE TABLE Persons (
ID Int NOT NULL,
Name String NOT NULL,
Age Int,
Creator String DEFAULT CURRENT_USER(),
CreateDate Date DEFAULT CURRENT_DATE(),
PRIMARY KEY (ID) DISABLE NOVALIDATE
);
支持Surrogate keys(代理键)
物化视图
Hive3像主流商用数据库一样支持创建物化视图,允许在不更改SQL的情况下优化工作负载和查询。
CREATE MATERIALIZED VIEW flight_agg
AS
SELECT dest,origin, ount(*)
FROM flights
GROUP BY desc,origin;
欢迎关注我的公众号“九万里大数据”,原创技术文章第一时间推送。