apache spark - pyspark 预计构造 ClassDict 的参数为零(对于 pyspark.mllib



我收到错误

构造 ClassDict 的预期参数为零(对于 pyspark.mllib.linalg.DenseVector)

通过尝试这个:

有一个函数,我将其转换为 udf,用于从数据帧转换列的值。喜欢这个:

def func(vector):
   #does something
   return Vector.dense(vector)
udfunc = udf(func, ArrayType(FloatType()))
new_df = df.withColumn("vector",func(df.vector))
new_df.show()

列 df.vector 具有 denseVector 值。

没有人有修复这个道具或提示的想法?

提前致谢

鉴于您提供的部分,明显的问题是您声明了不正确的返回类型。催化剂类型的Vector VectorUDTArrayType(FloatType())

from pyspark.mllib.linalg import Vectors, VectorUDT
from pyspark.sql.types import ArrayType, FloatType
from pyspark.sql.functions import udf
dummy_udf = udf(lambda _: Vectors.dense([0, 0, 0]), VectorUDT())
sc.parallelize([(Vectors.dense([1, 1, 1]), )]).toDF(["x"]).select(dummy_udf("x"))

在 Spark 2.0 及更高版本中,使用 pyspark.ml.linalg 来实现与pyspark.ml API 的兼容性。

相关内容

  • 没有找到相关文章

最新更新