如何在Hive表中按纪录时间间隔对记录进行分组?

时间:2016-03-27 02:43:41

标签: group-by hive epoch

我在时期中列出了列值(例如,最小值= 1276570880,最大值= 1276657260)。如何基于30分钟的间隔对我的Hive表中的记录进行分组。

我需要从最小时间戳值开始每隔30分钟计算一个值,直到时间戳列中的最大时间戳值。

我已尝试过以下查询,但未产生任何结果。

SELECT  COUNT(method) AS mycount, FROM_UNIXTIME(floor(UNIX_TIMESTAMP(ts)/1800)*1800)   
FROM http
WHERE ts >= '2010-06-14 20:01:20'
AND ts <= '2010-06-14 22:01:20'
AND method='GET'
GROUP 
    BY FROM_UNIXTIME(
         floor(UNIX_TIMESTAMP(ts)/1800)*1800)

1 个答案:

答案 0 :(得分:1)

这应该有效。在时间戳上使用舍入对于分组正常工作很重要。这是一个显示您具体示例的SQLfiddle example

select count(method) as mycount,
       from_unixtime(round(unix_timestamp(ts))
from http
where ts >= '2010-06-14 20:01:20'
and ts <= '2010-06-14 22:01:20'
and method='GET'
group by round(ts/1800)