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

Spark如何合并两个数组列且保留重复元素?

Spark合并两个数组列并保留所有重复元素的实现方法

Spark提供的array_union函数在合并数组时会自动去重,但如果需要合并两个数组列且保留所有重复元素(包括数组内部的重复项以及两个数组间的重复项),可以使用array_concat函数来实现。

原始数据

+---------+---------+
|field    |field1   |
+---------+---------+
|[1, 2, 2]|[1, 2, 2]|
+---------+---------+

实现代码

替换原本的array_union,改用array_concat:

.withColumn("union", array_concat(col("field"), col("field1")))

执行结果

执行后会得到包含所有元素的合并数组,符合期望结果:

+---------+---------+------------------+
|field    |field1   |union             |
+---------+---------+------------------+
|[1, 2, 2]|[1, 2, 2]|[1, 2, 2, 1, 2, 2]|
+---------+---------+------------------+

补充说明

  • array_concat的作用是将多个数组按顺序拼接,不会对元素做去重处理,完全保留所有原始元素的顺序和重复项。
  • 该函数支持传入多个数组列参数,不止局限于两个数组的合并。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 18:45:26