Hive表删除分区范围

Hive支持按照分区字段范围删除多个分区。

数据准备:

1
2
3
4
5
6
7
8
9
10
11
12
13
create table mytable(
name string
)
partitioned by(dt string);

insert into mytable
values
('a', '20240801'),
('b', '20240802'),
('c', '20240803'),
('d', '20240804'),
('e', '20240805'),
('f', '20240806');

查看分区情况:

1
2
3
4
5
6
7
8
9
10
11
0: jdbc:hive2://localhost:10000> show partitions mytable;
+--------------+
| partition |
+--------------+
| dt=20240801 |
| dt=20240802 |
| dt=20240803 |
| dt=20240804 |
| dt=20240805 |
| dt=20240806 |
+--------------+

删除多分区:

1
0: jdbc:hive2://localhost:10000> ALTER TABLE mytable DROP PARTITION (dt>'20240801', dt<'20240804');

再次查看分区:

1
2
3
4
5
6
7
8
9
0: jdbc:hive2://localhost:10000> show partitions mytable;
+--------------+
| partition |
+--------------+
| dt=20240801 |
| dt=20240804 |
| dt=20240805 |
| dt=20240806 |
+--------------+