Это можно сделать с помощью 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"));
, где результат может использоваться с select
или withColumn
.
конечная цель - разбить Вектор на отдельные столбцы.
Это просто вопрос простой индексации - Spark Scala: Как преобразовать Dataframe [вектор] в DataFrame [f1: Double, ..., fn: Double)]