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

Spark DataFrame依据数组colB筛选嵌套数组colA生成新嵌套列

Spark DataFrame 数组列过滤实现方案

直接修改filter高阶函数内的判断逻辑,使用Spark内置的array_contains方法判断id是否在colB数组中即可,代码实现如下:

inputDF
      .withColumn(
        "colC",
        expr(
          "filter(colA, colA_struct -> array_contains(colB, colA_struct.id))"
        )
      )

逻辑说明

  • array_contains(数组列, 匹配值)是Spark SQL原生提供的数组判断函数,会自动遍历数组判断匹配值是否存在,返回布尔值
  • 过滤逻辑会保留colA中所有id字段在colB数组里的结构体,和期望输出完全匹配

边界场景适配(可选)

如果需要处理colB为null的场景,可以自行扩展判断条件:

  • colB为null时返回空数组:filter(colA, colA_struct -> colB is not null and array_contains(colB, colA_struct.id))
  • colB为null时返回完整colA数组:filter(colA, colA_struct -> colB is null or array_contains(colB, colA_struct.id))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:06:08