简短结论:Hive 本身是“数据仓库”,传统上不支持事务(ACID),但在特定配置和版本下,Hive 是支持有限的事务能力的。
下面分情况说明:
不支持事务
INSERT(追加)LOAD DATASELECTUPDATEDELETEBEGIN / COMMIT / ROLLBACK)典型使用场景:
支持有限 ACID 事务
INSERTUPDATEDELETEORCSET hive.support.concurrency=true;
SET hive.enforce.bucketing=true;
SET hive.exec.dynamic.partition.mode=nonstrict;
SET hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
SET hive.compactor.initiator.on=true;
SET hive.compactor.worker.threads=1;
CREATE TABLE user_info (
id INT,
name STRING
)
CLUSTERED BY (id) INTO 2 BUCKETS
STORED AS ORC
TBLPROPERTIES ('transactional'='true');
⚠️ 不是完整数据库事务
✅ 适合:
❌ 不适合:
| 系统 | 事务 | 场景 |
|---|---|---|
| MySQL | ✅ 完整 ACID | OLTP |
| Hive | ⚠️ 有限 ACID | OLAP |
| HBase | ❌ 行级原子 | 实时 KV |
如果你是 “数仓更新 / 缓慢变化维 / 数据修正” 场景,可以告诉我你的 Hive 版本,我可以给你一套可落地的建表 + 配置方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。