在蜂巢中加入两个表

时间:2012-02-17 05:26:45

标签: hadoop hive database-partitioning

我有表格,我按年,月和日期划分日期

'ABC'分区

  

(年='2011',月='08',日='01')

我想运行类似

的查询
select * from ABC where dt>='2011-03-01' and dt<='2012-02-01';

如何使用上面的分区方案按年,月和日运行此查询?

2 个答案:

答案 0 :(得分:2)

您可以考虑创建一个由“yyyy-mm-dd”分区的外部表,并使用与现有表相同的位置。您不必复制任何数据,并且您将具有两种分区格式的灵活性。

答案 1 :(得分:0)

select * from ABC where year='2011' and month >= '03'
UNION
select * from ABC where year='2012' and month = '01'
UNION
select * from ABC where year='2012' and month='02' and day='01';

上述查询应解决目的,但它实际上既不灵活也不易读。像Matt建议的那样,更好的分区格式是yyyy-MM-dd格式的单个字符串变量作为分区列。但是,如果将年,月,日的分区方案更改为dt,则可能必须复制数据。但在我看来,这完全是值得的。