Hive分区

Posted 董俊杰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive分区相关的知识,希望对你有一定的参考价值。

1、查看分区

Hive> show partitions  table_name;

dt=20101101

dt=20101102

....

Time taken: 0.140 seconds, Fetched: 10 row(s)

2、  hive>desc  tb  partition(dt=20170612) 

3.hive>  desc extended  tb  partition(dt=20170612) 

可以用这个命令查看有时候建立分区是在特定指定location的。

4、建立分区表

CREATE EXTERNAL TABLE seed_my (col MAP<STRING, STRING>) partitioned by (dt string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,‘  COLLECTION ITEMS TERMINATED BY ‘\t‘ MAP KEYS TERMINATED BY ‘|‘ STORED AS INPUTFORMAT "org.apache.hadoop.mapred.TextInputFormat" OUTPUTFORMAT "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat" LOCATION ‘s3://up/seed/myhome‘; 

 

5、添加分区

ALTER TABLE table_name ADD PARTITION (dt= ‘$dt‘) location ‘$dt‘;

ALTER TABLE table_name ADD IF NOT EXISTS PARTITION (dt=‘$dt‘) LOCATION ‘/sss/$dt‘; //一次添加一个分区

ALTER TABLE table_name ADD PARTITION (dt=‘$dt‘, hour=‘$hour‘) location ‘/path/$dt/$hour  PARTITION (dt=‘$dt‘,  hour=‘$hour‘) location ‘/path/$dt/$hour‘;  //一次添加多个分区

 

6\删除分区

ALTER TABLE table_name DROP IF EXISTS PARTITION (dt=‘dt‘);
ALTER TABLE table_name DROP IF EXISTS PARTITION (dt=‘dt‘, hour=‘$hour‘);


修改分区
ALTER TABLE table_name PARTITION (dt=‘$dt‘) SET LOCATION "$path";
ALTER TABLE table_name PARTITION (dt=‘$dt‘) RENAME TO PARTITION (dt=‘$dt_yyyymmdd’);

 
 

以上是关于Hive分区的主要内容,如果未能解决你的问题,请参考以下文章

hive的严格模式和分区

hive外部表分区

hive中怎样删除分区

hive扫描分区不超过400个

hive 怎么查表都有哪些分区

hive中怎样删除分区