2016-09-23 76 views
0

我有一个HIVE表每天分区一天明智的,像以下(包括将来的日期的分区以及)下降蜂巢分区动态

20160901 
20160902 
........ 
........ 
........ 
20160931 
20161001 
20161002 

我想传递一个日期,例如说昨天的日期20160922和要动态删除所有> = 20160922的分区(尽管今天是20160923,但我想从2016年9月22日起删除)。

如何动态删除所有这些分区。

回答

0

由于不支持动态sql,因此您无法直接在配置单元中执行操作。

可以解决使用shell脚本/或任何脚本创建文件具有下面的drop分区脚本。

alter table partition_t drop if exists partition(y = 20160922);

alter table partition_t drop if exists partition(y = 20160921);

alter table partition_t drop if exists partition(y = 20160920); ...

然后运行蜂巢-v -f ./file.sh

ALTER TABLE partition_t下降是否存在分区

0

将数据插入到表中执行以下步骤之前。

1)进入该表的HDFS文件夹,并使用Shell命令删除所有文件夹中的 表目录。 hadoop的FS -rmř<>

2)运行MSCK修复表更新关于分区的元数据。

以上两步将根据模式删除所有可用的分区。

现在插入您的新数据。