我在我的环境中使用 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
但实际上,这3个分区被删除:
game=Test/date_dim=2014-07-01
game=Test/date_dim=2014-07-11
game=Test/date_dim=2014-07-21
似乎 hive drop 分区仅使用
date_dim<='2014-07-30'
条件。无论如何,是否可以按照我的意愿制作 hive drop 分区?
最佳答案
您应该将字符串转换为日期类型,为此您可以使用 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'))
关于hive - 按日期范围删除配置单元分区,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28312441/