在Hive中对数组字段进行分组统计时,需先用explode函数将数组元素拆分为多行,再通过GROUPBY和COUNT实现分组计数。该方法可明确每个标签出现的记录数,但需注意数组内重复元素会导致同一记录被多次计入。
Hive里要对数组类型的字段做分组统计?直接上GROUP BY行不行?答案是:可以,但得先把数组“摊平”——用explode函数把数组里的每个元素拆成一行,然后再分组。这个思路其实很自然,就像把一盒多色纽扣倒出来,按颜色数一数一样。

长期稳定更新的攒劲资源: >>>点此立即查看<<<
假设你有一个表叫my_table,里面有个数组字段tags,存着每个记录对应的标签列表。现在你想知道每个标签出现了多少次,也就是按标签分组统计记录数。怎么操作?三步走:
第一步,用explode把tags数组展开成多行,每个元素变成单独的一行;第二步,对展开后的结果做GROUP BY,按标签分组;第三步,用COUNT(*)统计每组有多少条记录。
下面这个查询就能搞定:
SELECT
tag,
COUNT(*) AS num_records
FROM (
SELECT
explode(tags) AS tag
FROM my_table
) AS exploded_table
GROUP BY tag;
结果会返回每个标签和它出现的次数,清晰明了。当然,实际业务中数组里可能含有重复元素,这里统计的是每个标签出现的记录数——如果同一个记录里的tags有重复值,那么该记录会被多次计入,这一点需要注意。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述