为什么在hive数据库添加分区后在集群的网页里不显示?

发布网友 发布时间: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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com