将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
之一。
希望这项工作