将Scala中的WrappedArrays列转换为Vector [Double]的列

将Scala中的WrappedArrays列转换为Vector [Double]的列

问题描述:

我有一个Scala中的数据框,带有3个观察值。其中一列包含包裹阵列,这样,当我写:将Scala中的WrappedArrays列转换为Vector [Double]的列

df.select("column").collect() 

我会回来

Array[org.apache.spark.sql.Row]= Array([WrappedArray(0.8, 0.5, 0.6)],[WrappedArray(0.6, 0.55, 0.7)], [WrappedArray(0.3, 0.4, 0.5, 0.6)]) 

是否有包装的阵列转换为载体的功能?

你可以试试这个

import org.apache.spark.mllib.linalg.Vectors 
val vectorUDF = org.apache.spark.sql.functions.udf((array: Array[Double]) => { 
Vectors.dense(array) 
    }) 
df.withColumn("vector", vectorUDF(df.select("column"))).drop("column") 

Vectors.dense()允许您将数组[双]转换成矢量值

请检查输入,如果你正在使用ml库或mllib之一。

希望这项工作