Spark Dataset<Row> 向量列到数组类型的转换

Spark Dataset<Row> Vector column to Array type conversion

我有一列 "features",它是一个向量。有没有办法将此 Vector 列转换为 Array 列?我正在使用 Spark 2.3 和 Java。 实际上,最后的 objective 是将 Vector 拆分为单独的列。 谢谢。

这可以通过 UserDefinedFunction 来完成。您可以这样定义一个:

import org.apache.spark.sql.types.*;
import org.apache.spark.sql.expressions.UserDefinedFunction;
import static org.apache.spark.sql.functions.*;

UserDefinedFunction toarray = udf(
  (Vector v) -> v.toArray(),  new ArrayType(DataTypes.DoubleType, false)
);

然后将其应用于 Column:

import org.apache.spark.sql.Column;

Column featutesArray = toarray.apply(col("features"));

结果可以与 selectwithColumn 一起使用。

the final objective is to split the Vector into individual columns.

这只是一个简单的索引问题 -