(Hive,SQL) - 如何对列内的字符串列表进行排序?

时间:2017-02-10 20:06:26

标签: sql hadoop hive cloudera impala

我在Hive(SQL)中遇到了大数据问题。

SELECT genre, COUNT(*) AS unique_count
FROM table_name
GROUP BY genre

给出的结果如下:

genre           |   unique_count
----------------------------------
Romance,Crime,Drama,Law | 1560
Crime,Drama,Law,Romance | 895
Law,Romance,Crime,Drama | 942
Adventure,Action        | 3250
Action,Adventure        | 910

我想要的是对流派ASC | DESC中的元素进行排序并得到像

这样的结果
genre           |   unique_count
----------------------------------
Crime,Drama,Law,Romance | 3397
Action,Adventure        | 4160

我可以在Python中执行此操作,但我有超过200 Million行的数据。我不知道有什么合理的方法可以移动这些数据。 那我怎么能实现这个呢?

1 个答案:

答案 0 :(得分:5)

select      concat_ws(',',sort_array(split(genre,','))) as genre
           ,count(*)                                    as unique_count

from        table_name

group by    concat_ws(',',sort_array(split(genre,',')))