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

How do I group records by epoch time intervals in Hive table?

我在纪元中有时间戳列值(例如,最小值 = 1276570880,最大值 = 1276657260)。我如何根据 30 分钟的间隔对 Hive table 中的记录进行分组。

我需要在时间戳列中从最小时间戳值开始到最大时间戳值每 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)

这应该有效。在时间戳上使用 round 对于分组的正确工作很重要。这是一个 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)