gpt4 book ai didi

scala - 使用 Spark ML 时的 VectorUDT 问题

转载 作者:行者123 更新时间:2023-12-03 01:29:01 25 4
gpt4 key购买 nike

我正在编写一个 UDAF,将其应用于 Vector 类型的 Spark 数据框列 (spark.ml.linalg.Vector)。我依赖于spark.ml.linalg包,这样我就不必在dataframe和RDD之间来回切换。

在 UDAF 内部,我必须为输入、缓冲区和输出模式指定数据类型:

def inputSchema = new StructType().add("features", new VectorUDT())
def bufferSchema: StructType =
StructType(StructField("list_of_similarities", ArrayType(new VectorUDT(), true), true) :: Nil)

override def dataType: DataType = ArrayType(DoubleType,true)

VectorUDT 是我将与spark.mllib.linalg.Vector 一起使用的: https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/mllib/linalg/Vectors.scala

但是,当我尝试从spark.ml导入它时:import org.apache.spark.ml.linalg.VectorUDT我收到运行时错误(构建期间没有错误):

class VectorUDT in package linalg cannot be accessed in package org.apache.spark.ml.linalg 

这是预期的吗/您能建议解决方法吗?

我使用的是 Spark 2.0.0

最佳答案

在 Spark 2.0.0 中,正确的方法是使用 org.apache.spark.ml.linalg.SQLDataTypes.VectorType 而不是 VectorUDT。它是在 this issue 中引入的.

关于scala - 使用 Spark ML 时的 VectorUDT 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38981425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com