0

SparseVectors(pyspark.ml.feature.IDFを使用して作成)を含むPySpark dfの列にUDFを適用しようとしています。もともとは、より複雑な関数を適用しようとしていましたが、関数の任意のアプリケーションで同じエラーが発生しています。私はこのエラーを取得していますspark 2.0のUDFをSparseVector列に適用

udfSum = udf(lambda x: np.sum(x.values), FloatType()) 
df = df.withColumn("vec_sum", udfSum(df.idf)) 
df.take(10) 

:例のためになるよう

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) 

私はパンダにDFを変換し、関数を適用した場合、私はFloatType()が正しいことを確認することができます応答タイプ。これは関連している可能性がありますが、エラーは異なります:Issue with UDF on a column of Vectors in PySpark DataFrame

ありがとうございます!

答えて

1

floatに出力を変換します

udf(lambda x: float(np.sum(x.values)), FloatType()) 
+0

が魅力のように働きました! – abbbby

関連する問題