Набор данных Spark <Row>Преобразование векторного столбца в массив - PullRequest
0 голосов
/ 18 ноября 2018

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

1 Ответ

0 голосов
/ 18 ноября 2018

Это можно сделать с помощью 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)]

...