0
我想将一个UDF应用于包含SparseVectors(使用pyspark.ml.feature.IDF创建)的PySpark df中的列。最初,我试图应用更多涉及的功能,但是对于任何功能的应用程序都会遇到同样的错误。因此,对于一个例子的缘故:将UDF应用于Spark 2.0中的SparseVector列
udfSum = udf(lambda x: np.sum(x.values), FloatType())
df = df.withColumn("vec_sum", udfSum(df.idf))
df.take(10)
我收到此错误:如果我转换使用df熊猫和应用功能
Py4JJavaError: An error occurred while calling
z:org.apache.spark.sql.execution.python.EvaluatePython.takeAndServe.
: org.apache.spark.SparkException: Job aborted due to stage failure:
Task 0 in stage 55.0 failed 4 times, most recent failure: Lost task 0.3
in stage 55.0 (TID 111, 10.0.11.102): net.razorvine.pickle.PickleException:
expected zero arguments for construction of ClassDict (for numpy.dtype)
,我可以证实,FloatType()是正确的响应类型。这可能是相关的,但错误是不同的:Issue with UDF on a column of Vectors in PySpark DataFrame。
谢谢!
工作就像一个魅力! – abbbby