运行GroupBy时的Hive排序

时间:2015-01-19 17:50:22

标签: sql hive

我有一个Hive表,其数据如下: HIVE表

"分区,id,seq,raw"

xm1, aaa, 3, <end>
xm1, aaa, 2, <middle>
xm1, aab, 1, <begin>
xm1, aaa, 1, <begin>
xm1, aab, 3, <end>
xm1, aab, 2, <middle>

我想要做的是运行一个Select SQL,它将返回&#34;分区,id和[]&#34;基于seq

我以不同的顺序取回收集的集合&#34; xm1,aaa,[]。&#34;

如何使用序列号按顺序获取此信息?我不能在小组中使用序列。

我正在运行如下的SQL语句:

SELECT partition, id, collect_set(raw) 
FROM test_rpt_sorted 
WHERE id='aaa' 
GROUP BY partition, id

1 个答案:

答案 0 :(得分:0)

您可以尝试使用sort_array内置函数对collect_set的结果执行排序。

SELECT partition, id, sort_array(collect_set(seq))
FROM test_rpt_sorted
WHERE id='aaa'
GROUP BY partition, id;

请注意,根据HIVE-2279,从{Hive 0.9.0开始,sort_array功能可用(希望您的安装不早于此版本)。