【问题标题】:Spark Dataset<Row> Vector column to Array type conversionSpark Dataset<Row> 向量列到数组类型的转换
【发布时间】:2019-04-20 23:11:52
【问题描述】:

我有一列“特征”,它是一个向量。有没有办法将此 Vector 列转换为 Array 列?我正在使用 Spark 2.3 和 Java。 实际上,最终目标是将 Vector 拆分为单独的列。 谢谢。

【问题讨论】:

    标签: java apache-spark apache-spark-sql apache-spark-ml


    【解决方案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"));
    

    结果可与selectwithColumn 一起使用。

    最终目标是将向量拆分为单独的列。

    这只是一个简单的索引问题 - Spark Scala: How to convert Dataframe[vector] to DataFrame[f1:Double, ..., fn: Double)]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      • 2020-05-20
      • 2021-04-12
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多