我是scala的新手,我有以下问题。
我有一个sparkDataframe,其模式如下:
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更改元素,然后将其转换回dataframe,但我得到以下数据类型 Array[WrappedArray]
我不知道该怎么处理。
使用pyspark和numpy,我可以通过 df.select("vector").rdd.map(lambda x: numpy.asarray(x))
.
任何帮助都将不胜感激。
1条答案
按热度按时间wecizke31#
你很接近。请尝试以下代码: