如何将String列转换为List

时间:2018-05-22 21:50:04

标签: scala apache-spark apache-spark-sql

我的数据框如下所示:

enter image description here

df.schema导致:

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

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

1 个答案:

答案 0 :(得分:0)

剥离[]并拆分,

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*"))