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

Afl*_*loz 3 sql hadoop hive cloudera impala

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

SELECT genre, COUNT(*) AS unique_count
FROM table_name
GROUP BY genre
Run Code Online (Sandbox Code Playgroud)

给出的结果如下:

genre           |   unique_count
----------------------------------
Romance,Crime,Drama,Law | 1560
Crime,Drama,Law,Romance | 895
Law,Romance,Crime,Drama | 942
Adventure,Action        | 3250
Action,Adventure        | 910
Run Code Online (Sandbox Code Playgroud)

我想要的是对类型ASC | DESC中的元素进行排序并获得结果

genre           |   unique_count
----------------------------------
Crime,Drama,Law,Romance | 3397
Action,Adventure        | 4160
Run Code Online (Sandbox Code Playgroud)

我可以用Python做到这一点,但我有超过200 Million数据行.我不知道有什么合理的方法可以移动这些数据.那我该怎么做呢?

Dav*_*itz 7

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

from        table_name

group by    concat_ws(',',sort_array(split(genre,',')))
Run Code Online (Sandbox Code Playgroud)