Hive 删库跑路

2023-09-23 08:50:15 浏览数 (2)

“删库跑路”作为一种历史悠久、后果严重的公司资产损坏事故,一旦发生,后果难以估量,轻则业务短时间不可用,重则公司倒闭关门,甚至有人为此坐牢。已经发生的事件历历在目,希望大家引以为戒。

在实际工作中,诸如删除表数据、删除表乃至删除数据库等操作都较为常见,尤其是在测试和发布环境中。作为数据工程师,我们要注意掌握以下 Hive DDL 操作方法,并在生产环境中谨慎执行:

1. 删除数据库

代码语言:javascript复制
DROP DATABASE IF EXISTS mydb;

-- 强制删除数据库,级联删除,会递归删除数据库中的所有表及其数据。
DROP DATABASE IF EXISTS mydb CASCADE;

2. 删除表

代码语言:javascript复制
DROP TABLE ods.ods_xxx_day;

3. 删除表数据

代码语言:javascript复制
-- 清空表-方法1
TRUNCATE TABLE ods.ods_xxx_day; 

-- 清空表-方法2
INSERT OVERWRITE TABLE ods.ods_xxx_day 
SELECT * FROM ods.ods_xxx_day 
WHERE 1=2;

--  按条件删除部分数据
```sql
INSERT OVERWRITE TABLE ods.ods_xxx_day 
SELECT * FROM ods.ods_xxx_day 
WHERE id > 1000;

4. 删除分区

删除单个分区:(显示指定,ds 为分区列名)

代码语言:javascript复制
ALTER TABLE ods.ods_xxx_day DROP [IF EXISTS] PARTITION (ds='20230920'); 

删除多个分区:(显示指定)

代码语言:javascript复制
ALTER TABLE ods.ods_xxx_day DROP [IF EXISTS] PARTITION (ds='20230920', ds='20230921',...);

5. 批量删除分区

删除指定目录下的所有分区:

代码语言:javascript复制
-- 方法1(目录指定)
ALTER TABLE table_name DROP IF EXISTS PARTITIONS path='/data/my_table/dt=20230920';
-- 方法2(范围指定)
ALTER TABLE table_name DROP [IF EXISTS] PARTITION (ds >= '20230901', ds < '20230920')

以上概括了 Hive 中常见的 DDL 操作,请各位务必注意在生产环境中谨慎操作。

0 人点赞