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 に答える