使用Hive构建和聚合时间序列

时间:2013-03-06 15:13:20

标签: hive

我是Hive的新手,我有一个架构所在的表:

Name, Count, Timestamp

我想知道是否可以编写一个触发EMR作业的查询,并在给定间隔和开始/结束时期的情况下提取/聚合每个名称的计数列表。

E.g。

表格内容:

NameA, 1, 10000
NameA, 1, 2
NameA, 1, 1
NameB, 1, 500
NameB, 1, 1

参数:

Interval: 1000ms
Start: 0
End: 10000

输出:

NameA, [2,0,0,0,0,0,0,0,0,1]
NameB, [2,0,0,0,0,0,0,0,0,0]

1 个答案:

答案 0 :(得分:2)

要使格式完全,这样会有点棘手,但有些内容......

SELECT
   name,
   round((timestamp - ${hiveconf:start})/${hiveconf:interval}) as interval_group,
   count(*) as interval_count
FROM source_table
WHERE timestamp >= ${hiveconf:start} and timestamp <= ${hiveconf:end}
GROUP BY name, round((timestamp - ${hiveconf:start})/${hiveconf:interval})
ORDER BY name, interval_group

您必须进行后期处理才能为不存在的时间间隔组填写零并格式化输出,但这样可以获得所需的数据。