【问题标题】:Cast Stringtype to ArrayType将 Stringtype 转换为 ArrayType
【发布时间】:2017-02-20 23:37:13
【问题描述】:

是否可以将 StringType 列转换为 spark 数据框中的 ArrayType 列?

df.printSchema() 给出了这个

架构 ->
一:字符串(可空=真)

现在我想把它转换成

a: 数组(nullable= true)

【问题讨论】:

  • 你不能投你必须拆分它
  • 如何拆分它。你能举个例子解释一下吗?
  • 你介意至少提供一个数据样本吗?
  • a = [{val1:"somevalue_x", val2:"somevalue_y"}, {val1:"someValue_z", val2:"someValue_v"}] ,目前 a 是一个字符串,我希望它为一个数组

标签: scala apache-spark


【解决方案1】:

正如elisiah 所说,您必须拆分字符串。你可以使用UDF:

    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)

【讨论】:

    【解决方案2】:

    另一种选择简单地将任何column 包装在functions.array 中。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-06
      • 2018-10-21
      • 2020-11-20
      相关资源
      最近更新 更多