2013-03-06 63 views
1

我是新来撵,我有一个表,其中的模式是:生成和聚集的时间序列采用蜂巢

Name, Count, Timestamp 

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

E.g.

表内容:

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

Paremeters:

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] 

回答

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 

你必须进行后处理,以填补零为不存在的间隔基团和格式化输出,但应该得到你所需要的数据。