gpt4 book ai didi

apache-spark - pyspark 预期构建 ClassDict 的参数为零(对于 pyspark.mllib.linalg.DenseVector)

转载 作者:行者123 更新时间:2023-12-04 14:56:18 28 4
gpt4 key购买 nike

我得到错误

expected zero arguments for construction of ClassDict (for 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 的催化剂类型是 VectorUDT不是 ArrayType(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。

关于apache-spark - pyspark 预期构建 ClassDict 的参数为零(对于 pyspark.mllib.linalg.DenseVector),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38249291/

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