1

我是 Hive 的新手,我有一张表,其中的架构是:

Name, Count, Timestamp

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

例如

表格内容:

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]
4

1 回答 1

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

您必须进行后处理以填充不存在的间隔组的零并格式化输出,但这应该可以为您提供所需的数据。

于 2013-03-07T06:04:06.117 回答