У меня есть столбец «особенности», который является вектором. Есть ли способ преобразовать этот столбец вектора в столбец массива? Я использую Spark 2.3 и Java. Фактически, конечная цель - разбить вектор на отдельные столбцы. Спасибо.

0
Sam 18 Ноя 2018 в 14:23

1 ответ

Лучший ответ

Это можно сделать с помощью 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 [vector] в DataFrame [f1: Double, ..., fn : Double)]

2
10465355 18 Ноя 2018 в 12:46