在Hive中对数组字段进行分组统计时,需先用explode函数将数组元素拆分为多行,再通过GROUPBY和COUNT实现分组计数。该方法可明确每个标签出现的记录数,但需注意数组内重复元素会导致同一记录被多次计入。
Hive数组分组操作实现方法
作者:技术拾光
时间:2026-07-27
浏览:330
文章目录
Hive数组字段分组统计:利用explode与GROUP BY实现
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有重复值,那么该记录会被多次计入,这一点需要注意。
实用工具推荐
电子包浆
使用 ›绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
图片压缩
使用 ›选择画质和输出格式,预览压缩前后的大小。