在日期/时间范围内查询配置单元分区表

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)

Ama*_*mar 8

这是我们在查询蜂巢中的表时每天面临的类似情况.我们已经按照您解释的方式对表格进行了分区,如果查询它会有很多帮助.这就是我们分区的方式:

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)

希望这可以帮助


dps*_*dce 3

你可以这样查询

  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”。

我在我的样本表上运行了它,它工作得很好。