You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Hive中将两列拼接为Map并按id主键聚合

Hive按主键聚合并转换为Map类型的实现方案

你可以根据你使用的Hive版本选择对应实现方式:

  • 方案1:Hive 2.3.0及以上版本,直接使用内置聚合函数map_agg,语法最简洁,性能最优:
SELECT
  id,
  map_agg(locale, value) AS locale_value_map
-- 此处替换为你的实际表名
FROM your_table_name
GROUP BY id;

执行后返回的locale_value_map字段就是你需要的Map<locale, value>结构,直接匹配预期输出格式。

  • 方案2:Hive 2.3.0以下版本,使用collect_list+str_to_map组合实现兼容:
SELECT
  id,
  str_to_map(
    concat_ws(',', collect_list(concat_ws(':', locale, value)))
  ) AS locale_value_map
-- 此处替换为你的实际表名
FROM your_table_name
GROUP BY id;

注意:如果你的locale或value字段本身包含冒号:、逗号,的特殊字符,请先对特殊字符做转义处理,避免str_to_map拆分映射关系出错。

内容的提问来源于stack exchange,提问作者ddbb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 07:48:03