Hive数组分组操作实现方法

作者:技术拾光时间:2026-07-27 08:39:14浏览:331

在Hive中对数组字段进行分组统计时,需先用explode函数将数组元素拆分为多行,再通过GROUPBY和COUNT实现分组计数。该方法可明确每个标签出现的记录数,但需注意数组内重复元素会导致同一记录被多次计入。

Hive数组字段分组统计:利用explode与GROUP BY实现

Hive里要对数组类型的字段做分组统计?直接上GROUP BY行不行?答案是:可以,但得先把数组“摊平”——用explode函数把数组里的每个元素拆成一行,然后再分组。这个思路其实很自然,就像把一盒多色纽扣倒出来,按颜色数一数一样。

Hive数组分组操作实现方法

问题背景

假设你有一个表叫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有重复值,那么该记录会被多次计入,这一点需要注意。