使用Hive查询分析时间序列数据

时间:2014-06-03 14:21:46

标签: hadoop hive

我在Hive中有一个表,显示我们系统的每个用户(user_id)的登录时间(connect_date)。这是表结构:

hive> describe access_log;
OK
user_id                 double                  from deserializer
connect_date            timestamp               from deserializer
ip                      string                  from deserializer
logout_date             timestamp               from deserializer
session_id              string                  from deserializer

我的目标是找到特定时间段内每个用户登录之间的平均时间,让我们使用过去7天来解决此问题。

Hive Query如何实现对数据的分析?感谢。

1 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点:

1)您可以将connect_dates聚合到一个数组中并编写一个UDF来将日期/时间戳数组解析为平均时间。

2)您可以使用hive 0.12中引入的窗口函数 - 这更简单

select
    user_id, avg(connect_date-lag_connect_date)
from
    (
    select
        user_id, connect_date, lag(connect_date) over (partition by user_id order by connect_date) as lag_connect_date
    from
        access_log
    ) a
group by
    user_id