我在 hive 中有两个表,都由表示时间戳的字符串分区(我使用字符串而不是时间戳,因为我使用的是 Cloudera Impala 中的表,它不支持按时间戳分区的表)。
这些表用于在特定时间片中存储大量数据。第一个表包含较高时间粒度的最新数据,比如 1 分钟时间片,第二个表包含较低粒度的旧数据,比如 1 小时时间片。
所以我有一个查询,它总结了早于 1 分钟时间片的特定时间量的数据,以便我拥有 1 小时时间片的数据并将其与 1 小时时间片一起插入我的表中。
创建 1 小时时间片后,我想删除新的 1 小时时间片中包含的所有 1 分钟时间片。而且由于该表是由代表时间的字符串分区的,所以我可以删除相应的分区。
并知道我的实际问题:
是否有可能在蜂巢中以某种方式删除分区
ALTER TABLE oneMinSlices DROP IF EXISTS PARTITION(time < 'YYYY-MM-DD HH:MM:SS')
在此先感谢您的帮助。
ps:如果你想知道我为什么这样做:数据在持续增长,如果我们不删除 1 分钟的时间片,包含它们的表会变得非常大,导致我们的查询变慢并且需要很多的空间。