我在我的环境中使用hive-0.10.0-cdh-4.7.0。
我有一个名为test store的表作为序列文件,有一些分区由date_dim组成,如下所示:
game=Test/date_dim=2014-07-01
game=Test/date_dim=2014-07-11
game=Test/date_dim=2014-07-21
game=Test/date_dim=2014-07-31
我想在SQL命令中删除2014-07-21和2014-07-30之间的分区:
alter table test drop partition (date_dim>='2014-07-11',date_dim<='2014-07-30')
我希望删除这两个分区:
game=Test/date_dim=2014-07-11
game=Test/date_dim=2014-07-21
但实际上,这三个分区将被删除:
game=Test/date_dim=2014-07-01
game=Test/date_dim=2014-07-11
game=Test/date_dim=2014-07-21
似乎hive drop partition仅使用date_dim<='2014-07-30'
条件。
无论如何都要按照我的意愿制作hive drop partition?
答案 0 :(得分:2)
您应该将字符串转换为日期类型,为此您可以使用unix_timestamp函数:
alter table test drop partition (unix_timestamp(date_dim,'yyyy-MM-dd')>=unix_timestamp('2014-07-11','yyyy-MM-dd'),unix_timestamp(date_dim,'yyyy-MM-dd')<=unix_timestamp('2014-07-30','yyyy-MM-dd'))