Scala 将Stringtype转换为ArrayType

Scala 将Stringtype转换为ArrayType,scala,apache-spark,Scala,Apache Spark,是否可以将StringType列强制转换为spark数据帧中的ArrayType列 df.printSchema() 模式-> a:string(nullable=true) 现在我想把它转换成 a:数组(nullable=true) 如前所述,您必须拆分字符串。您可以使用自定义项: df.printSchema import org.apache.spark.sql.functions._ val toArray = udf[Array[String], Strin

是否可以将StringType列强制转换为spark数据帧中的ArrayType列

df.printSchema()

模式->
a:string(nullable=true)

现在我想把它转换成

a:数组(nullable=true)

如前所述,您必须拆分字符串。您可以使用自定义项:

    df.printSchema

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

    val toArray = udf[Array[String], String]( _.split(" "))
    val featureDf = df
      .withColumn("a", toArray(df("a")))  

    featureDF.printSchema
给出输出:

root  
 |-- a: string (nullable = true)

root
 |-- a: array (nullable = true)
 |    |-- element: string (containsNull = true)
如前所述,您必须拆分字符串。您可以使用自定义项:

    df.printSchema

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

    val toArray = udf[Array[String], String]( _.split(" "))
    val featureDf = df
      .withColumn("a", toArray(df("a")))  

    featureDF.printSchema
给出输出:

root  
 |-- a: string (nullable = true)

root
 |-- a: array (nullable = true)
 |    |-- element: string (containsNull = true)

另一个选项是在
functions.array
中简单地包装任何

df.withColumn("a", functions.array(col("a")))

另一个选项是在
functions.array
中简单地包装任何

df.withColumn("a", functions.array(col("a")))

你不能施展你必须分开我怎么才能分开它。你能用一个例子来解释吗?你愿意至少给出一个数据样本吗?a=[{val1:“somevalue_x”,val2:“somevalue_y”},{val1:“somevalue_z”,val2:“somevalue_v”}],目前a是一个字符串,我想要它作为一个数组。你不能强制转换,你必须拆分它。我如何拆分它。你能用一个例子来解释它吗?你愿意至少给出一个数据样本吗?a=[{val1:“somevalue_x”,val2:“somevalue_y”},{val1:“somevalue_z”,val2:“somevalue_v”}],目前a是一个字符串,我希望它是一个数组