首页 > 解决方案 > 如何将字符串列转换为列表

问题描述

我的数据框如下所示:

在此处输入图像描述

df.schema 导致:

StructType(
    StructField(a,StringType,true), 
    StructField(b,StringType,true), 
    StructField(c,IntegerType,true), 
    StructField(d,StringType,true)
)

我想将列b转换为整数列表,将列d转换为字符串列表。我该怎么做呢?

标签: scalaapache-sparkapache-spark-sql

解决方案


剥离[]和分割,

import org.apache.spark.sql.functions._

val p = "^\\[(.*)\\]$"

df
  .withColumn("b", split(regexp_extract(col("b"), p, 1), "\\s*,\\s*").cast("array<int>"))
  .withColumn("d", split(regexp_extract(col("d"), p, 1), "\\s*,\\s*"))

推荐阅读