ban*_*ara 5 hadoop hive mapreduce bigdata hiveql
我的hive表按年,月,日,小时分区
现在我想从2014-05-27获取数据到2014-06-05我该怎么做?
我知道一个选项是在纪元(或yyyy-mm-dd-hh)和查询传递纪元时间创建分区.我可以不失去日期层次吗?
表结构
CREATE TABLE IF NOT EXISTS table1 (col1 int, col2 int)
PARTITIONED BY (year int, month int, day int, hour int)
STORED AS TEXTFILE;
Run Code Online (Sandbox Code Playgroud)
这是我们在查询蜂巢中的表时每天面临的类似情况.我们已经按照您解释的方式对表格进行了分区,如果查询它会有很多帮助.这就是我们分区的方式:
CREATE TABLE IF NOT EXISTS table1 (col1 int, col2 int)
PARTITIONED BY (year bigint, month bigint, day bigint, hour int)
STORED AS TEXTFILE;
Run Code Online (Sandbox Code Playgroud)
对于分区,我们分配如下值:
year = 2014, month = 201409, day = 20140924, hour = 01
Run Code Online (Sandbox Code Playgroud)
这样查询变得非常简单,您可以直接查询:
select * from table1 where day >= 20140527 and day < 20140605
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
你可以这样查询
WHERE st_date > '2014-05-27-00' and end_date < '2014-06-05-24'
Run Code Online (Sandbox Code Playgroud)
应该给你想要的结果,因为即使它是一个刺,它也会按字典顺序进行比较,即“2014-04-04”将始终大于“2014-04-03”。
我在我的样本表上运行了它,它工作得很好。
| 归档时间: |
|
| 查看次数: |
10487 次 |
| 最近记录: |