跳到主要内容

map_zip_with:合并两个Map

速查结论

map_zip_with(map1, map2, function) 是 Spark SQL 中用于将两个映射按相同键应用函数后合并为单一映射的函数。

语法

map_zip_with(map1, map2, function)

参数说明

参数类型说明
map1MAP第一个映射(Map)对象
map2MAP第二个映射(Map)对象
functionLAMBDA接收 (k, v1, v2) 三个参数的 lambda 函数,k 为键,v1 和 v2 分别为两个映射中对应键的值。对于仅在一个映射中出现的键,缺失的值以 NULL 传入

示例

> SELECT map_zip_with(map(1, 'a', 2, 'b'), map(1, 'x', 2, 'y'), (k, v1, v2) -> concat(v1, v2));
{1:"ax",2:"by"}
> SELECT map_zip_with(map('a', 1, 'b', 2), map('b', 3, 'c', 4), (k, v1, v2) -> coalesce(v1, 0) + coalesce(v2, 0));
{"a":1,"b":5,"c":4}

常见报错与避坑指南

  • 如果输入映射包含重复的键,只有第一个条目会传递到 lambda 函数中,后续重复键会被忽略。
  • 对仅在一个映射中存在的键,缺失侧的值传入 NULL,建议在 lambda 中使用 coalesce 处理 NULL 值以避免意外结果。
  • lambda 函数必须接受恰好三个参数 (k, v1, v2),参数数量不匹配将导致 AnalysisException

Since: 3.0.0

📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

备注「数据仓库技术」加入社群,每日一道大厂SQL真题

交流微信二维码

你可能还想看