我有一个HIVE表每天分区一天明智的,像以下(包括将来的日期的分区以及)下降蜂巢分区动态
20160901
20160902
........
........
........
20160931
20161001
20161002
我想传递一个日期,例如说昨天的日期20160922和要动态删除所有> = 20160922的分区(尽管今天是20160923,但我想从2016年9月22日起删除)。
如何动态删除所有这些分区。
我有一个HIVE表每天分区一天明智的,像以下(包括将来的日期的分区以及)下降蜂巢分区动态
20160901
20160902
........
........
........
20160931
20161001
20161002
我想传递一个日期,例如说昨天的日期20160922和要动态删除所有> = 20160922的分区(尽管今天是20160923,但我想从2016年9月22日起删除)。
如何动态删除所有这些分区。
由于不支持动态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下降是否存在分区
将数据插入到表中执行以下步骤之前。
1)进入该表的HDFS文件夹,并使用Shell命令删除所有文件夹中的 表目录。 hadoop的FS -rmř<>
2)运行MSCK修复表更新关于分区的元数据。
以上两步将根据模式删除所有可用的分区。
现在插入您的新数据。