Hive 数据库 增删改 完整操作指南

Hive 是基于 Hadoop 的数据仓库 ,不支持传统数据库的行级事务(标准 Hive) ,核心用于离线数据分析。

Hive 对数据库(Database) 的操作只有 CREATE(增)、DROP(删)、ALTER(改) ,没有 UPDATE 数据库的概念;对表数据:Hive 2.0+ 支持事务表的 INSERT/UPDATE/DELETE,非事务表仅支持追加写入。


一、数据库操作(增 / 删 / 改)

1. 创建数据库(CREATE)

sql

复制代码
-- 基础创建
CREATE DATABASE IF NOT EXISTS my_db;

-- 带注释、存储路径创建
CREATE DATABASE IF NOT EXISTS my_db
COMMENT '这是我的测试数据库'
LOCATION '/user/hive/warehouse/my_db.db'  -- 指定HDFS存储路径
WITH DBPROPERTIES ('creator'='admin', 'date'='2025-01-01');  -- 自定义属性

2. 删除数据库(DROP)

sql

复制代码
-- 空数据库删除
DROP DATABASE IF EXISTS my_db;

-- 强制删除(数据库内有表时使用)
DROP DATABASE IF EXISTS my_db CASCADE;

3. 修改数据库(ALTER)

只能修改元数据信息,不能修改数据库名和存储路径:

sql

复制代码
-- 修改数据库注释
ALTER DATABASE my_db SET DBPROPERTIES ('comment'='修改后的注释');

-- 修改数据库属性
ALTER DATABASE my_db SET DBPROPERTIES ('owner'='user01');

4. 查看数据库

sql

复制代码
-- 查看所有数据库
SHOW DATABASES;

-- 查看数据库详情
DESC DATABASE my_db;
DESC DATABASE EXTENDED my_db;  -- 查看详细信息

二、表数据操作(增 / 删 / 改)

前提说明

  1. 普通表 :仅支持 INSERT 追加数据,不支持 UPDATE/DELETE
  2. 事务表 :Hive 2.0+ 开启事务后,支持 UPDATE/DELETE

1. 插入数据(增 INSERT)

sql

复制代码
-- 1. 直接插入单条/多条数据
INSERT INTO TABLE my_table VALUES (1,'张三'), (2,'李四');

-- 2. 查询结果插入(最常用)
INSERT INTO TABLE my_table SELECT id,name FROM user_table;

-- 3. 覆盖插入(清空表后写入)
INSERT OVERWRITE TABLE my_table SELECT * FROM user_table;

2. 更新数据(改 UPDATE)

必须是事务表

sql

复制代码
-- 更新满足条件的数据
UPDATE my_table 
SET name='张三三', age=25 
WHERE id=1;

3. 删除数据(删 DELETE)

必须是事务表

sql

复制代码
-- 删除指定条件数据
DELETE FROM my_table WHERE id=1;

-- 清空全表(等价于truncate)
DELETE FROM my_table;

三、Hive 事务表开启(必须配置)

如果需要使用 UPDATE/DELETE,必须在 Hive 客户端执行以下配置:

sql

复制代码
SET 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;

创建事务表必须指定:分桶 + ORC 存储 + 事务属性

sql

复制代码
CREATE TABLE my_table (
    id INT,
    name STRING
)
CLUSTERED BY (id) INTO 1 BUCKETS  -- 分桶
STORED AS ORC  -- ORC格式
TBLPROPERTIES ('transactional'='true');  -- 开启事务

总结

  1. 数据库操作 :CREATE(创建)、DROP(删除)、ALTER(修改属性)
  2. 数据插入 :INSERT INTO/OVERWRITE(所有表都支持)
  3. 数据更新 / 删除 :仅事务表 支持 UPDATE/DELETE,普通表不支持
  4. 核心特点 :Hive 主打离线分析,不适合高频增删改业务场景
相关推荐
阳光九叶草LXGZXJ5 小时前
达梦数据库-报错-15-列【XXX】长度超出定义
linux·运维·数据库·sql·学习
字节渡客5 小时前
Redis键明明过期了,业务还在读到旧数据
数据库·redis·spring
卷毛迷你猪7 小时前
快速实验篇(B16)用户级预测可行性审计(否定性意见)
大数据·hadoop·数据挖掘·聚类
OnlineProxy8 小时前
亚马逊多账号运营:如何在规避“关联封号”风险的同时实现电商规模化扩张
服务器·数据库·redis
辻弋2019 小时前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑
可乐鸡翅yeah_10 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
石头麻辣鱼10 小时前
Bamboo 调度系统 OceanBase 适配实战:存储过程迁移踩过的三个大坑
数据库
龙亘川11 小时前
数智驱动民政升级 精准守护民生保障
大数据·数据库·人工智能
念何架构之路11 小时前
zap扩展生态与总结
java·前端·数据库
晚安日记wanna12 小时前
MySQL 回表为什么这么慢?5 种优化手段逐个拆解
数据库·mysql·性能优化