Scala Spark SQL 将dataframe中某一列的所有值转化成list取出(包含列值为Seq(String)的情况)

本文介绍如何在Scala Spark SQL中将DataFrame的一列转换为List,特别是处理包含Seq(String)的情况。通过mkString方法处理String类型列,以及explode函数用于将WrappedArray类型列拆分为多个行,然后转化为String。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很久没有更新博客了,因为最近工作确实也很忙,不过忙碌的工作也让我收获了很多新的知识,趁着忙碌的间隙,来记录一下自己的成长。

这次的场景是:需要单独取出DataFrame中的某一列的所有值供Java程序使用。

下面的demo包含两个例子:
1.column value Type -> String, 即 row->String ,需要用到mkString这个方法
2.column value Type -> WrappedArray, 即Seq(String) ->String, 需要用到explode方法行转列增加一个column,即将每一个Seq中的每一个String值都取出放在新增列中生成一个row,例如

姓名 爱好
张三 {“唱歌”, “跳舞”}
李四 {“武术”}

对爱好这一列用explode函数,我们会得到:

姓名 爱好
张三 “唱歌”
张三 “跳舞”
李四 “武术”

之后就跟第一种情况一样row->String就可以了。

import org.apache.spark.sql.functions._
import org.apache.spark.sql.types.StringType
import org.apache.spark.sql.{
   DataFrame, SparkSession}
import org.json4s.jackson.Serialization

import scala.collection.JavaConversions.asScalaBuffer
import scala.collection.JavaConverters.mapAsScalaMapConverter
import scala.collection.immutable
import scala.util.matching.Regex

val spark = SparkSession.builder().appName("SparkSession").getOrCreate()
val wv = "/Pods/"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值