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

Spark DataFrame如何通用拼接多列名与对应值生成新列

解决方案

直接通过DataFrame的columns属性获取全部列名,批量生成每列的「列名=值」拼接表达式,再用concat_ws统一拼接所有键值对即可,不需要手动枚举a到x的列,完全适配动态列数场景。

完整实现代码如下:

import org.apache.spark.sql.functions.{col, lit, concat, concat_ws}

// 1. 获取当前DataFrame所有列名
val allColumns = sample.columns

// 2. 为每一列生成拼接表达式:格式为 列名=值
val kvExprList = allColumns.map(colName => concat(lit(s"$colName="), col(colName)))

// 3. 用逗号+空格分隔所有键值对,外层包裹双引号,命名为concate-fields
val resultDf = sample.select(
  concat(
    lit("\""),
    concat_ws(", ", kvExprList: _*),
    lit("\"")
  ).alias("concate-fields")
)

// 输出结果
display(resultDf)

如果需要排除部分列不参与拼接,只需要在获取列名的步骤加过滤逻辑即可,比如要跳过id列:

val allColumns = sample.columns.filter(_ != "id")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:30:04