use*_*884 2 hadoop hive hiveql
我在hive中有两个表,它们都用表示时间戳的String分区(我使用字符串而不是时间戳,因为我使用的是Cloudera Impala中的表,它不支持按时间戳分区的表).
这些表用于在特定时间片中存储大量数据.第一个表包含更高时间粒度的最新数据,比如说1分钟时间片和第二个较低粒度的旧数据,这里说1小时时间片.
所以我有一个查询总结了比1分钟时间片的特定时间更早的数据,这样我就有1小时时间片的数据,并用1小时时间片将其插入到我的表中.
创建1小时时间片后,我想删除新1小时时间片中包含的所有1分钟时间片.并且由于表是由表示时间的字符串分区的,因此我可以删除相应的分区.
并且知道我的实际问题:
是否有可能在蜂巢中以某种方式丢弃分区
ALTER TABLE oneMinSlices DROP IF EXISTS PARTITION(time < 'YYYY-MM-DD HH:MM:SS')
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助.
ps:如果你想知道为什么我这样做:数据是持续增长的,如果我们不删除1分钟的时间片,那么包含它们的表变得非常大,导致我们的查询变慢并且需要很多空间.
小智 6
从Hive 0.9.0开始,您可以在ALTER TABLE .. DROP PARTITION语句中使用所有比较器.这意味着您的原始陈述应该有效.请参阅:https://issues.apache.org/jira/browse/HIVE-2908.
| 归档时间: |
|
| 查看次数: |
14660 次 |
| 最近记录: |