【问题标题】:Change Spark Dataframe Array[String] to Array[Double]将 Spark Dataframe Array[String] 更改为 Array[Double]
【发布时间】:2021-04-08 20:25:17
【问题描述】:

我对 scala 很陌生,我有以下问题。

我有一个具有以下架构的 spark 数据框:

df.printSchema()    
root
     |-- word: string (nullable = true)
     |-- vector: array (nullable = true)
     |    |-- element: string (containsNull = true)

我需要将其转换为以下架构:

root
 |-- word: string (nullable = true)
 |-- vector: array (nullable = true)
 |    |-- element: double (containsNull = true)

我不想事先指定架构,而是更改现有架构。

我已经尝试了以下

df.withColumn("vector", col("vector").cast("array<element: double>"))

我也尝试将其转换为 RDD 以使用 map 更改元素然后将其转换回数据框,但我得到以下数据类型 Array[WrappedArray] 并且我不知道如何处理它。

使用 pyspark 和 numpy,我可以通过 df.select("vector").rdd.map(lambda x: numpy.asarray(x)) 做到这一点。

任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    你已经接近了。试试这个代码:

    val df2 = df.withColumn("vector", col("vector").cast("array<double>"))
    

    【讨论】:

      猜你喜欢
      • 2015-01-09
      • 2020-03-13
      • 2015-03-06
      • 2019-07-12
      • 1970-01-01
      • 2022-12-17
      • 2015-02-04
      • 1970-01-01
      • 2013-10-08
      相关资源
      最近更新 更多