发布网友 发布时间:2022-04-25 16:24
共1个回答
热心网友 时间:2022-05-04 00:49
hive> select
> c1
> ,c2
> ,c3
> ,c4
> from table1
> where dt='2019-02-12' and ='0'
> limit 5;
OK
NULLNULLNULLNULL
NULLNULLNULLNULL
NULLNULLNULLNULL
NULLNULLNULLNULL
NULLNULLNULLNULL
Time taken: 0.113 seconds, Fetched: 5 row(s)
hive> show partitions table1;
OK
dt=2019-02-12/=0
dt=2019-02-12/=1
Time taken: 0.108 seconds, Fetched: 2 row(s)
--删除分区直接写dt条件即可,下面的会同时删除
hive> alter table table1 drop partition(dt = '2019-02-12');
Dropped the partition dt=2019-02-12/=0
Dropped the partition dt=2019-02-12/=1
OK
Time taken: 0.316 seconds
--添加分区时,dt,需要同时写出来
hive> alter table table1 add partition(dt = '2019-02-12',='0');
OK
Time taken: 0.253 seconds
hive> alter table table1 add partition(dt = '2019-02-12',='1');
OK
Time taken: 0.081 seconds
hive> show partitions table1;
OK
dt=2019-02-12/=0
dt=2019-02-12/=1
Time taken: 0.075 seconds, Fetched: 2 row(s)
--跑完数据后,刷分区的话,新的字段的数据能查到
hive> select
> c1
> ,c2
> ,c3
> ,c4
> from table1
> where dt='2019-02-12' and ='0'
> limit 5;
OK
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
Time taken: 0.092 seconds, Fetched: 5 row(s)
如果目录多,需要执行多条alter语句,非常麻烦。Hive提供了一个"Recover Partition"的功能。
具体语法如下:
MSCK REPAIR TABLE table_name;
原理相当简单,执行后,Hive会检测如果HDFS目录下存在但表的metastore中不存在的partition元信息,更新到metastore中。
end