sed*_*ben 6 user-defined-functions apache-spark apache-spark-sql pyspark apache-spark-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()
Run Code Online (Sandbox Code Playgroud)
列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"))
Run Code Online (Sandbox Code Playgroud)
在Spark 2.0及更高版本中用于pyspark.ml.linalg实现与pyspark.mlAPI的兼容性.
| 归档时间: |
|
| 查看次数: |
3886 次 |
| 最近记录: |