pysp中数学函数与numpy函数的区别

2024-05-14 18:35:13 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么使用numpy函数而不是数学函数时pyspark的行为会有所不同? 例如

X = sc.parallelize([[DenseVector([4.9, 3.0, 1.4, 0.2]), DenseVector([4.6, 3.1, 1.5, 0.2])],[DenseVector([5.1, 3.5, 1.4, 0.3]), DenseVector([5.7, 3.8, 1.7, 0.3])]])
X_df = sqlcontext.createDataFrame(X, ["x","y"])
udf_foo = udf(lambda x, y:  m.exp(-x.squared_distance(y)/2.0), DoubleType())
X_sim = X_df.withColumn("sim", udf_foo(X_df.x, X_df.y))

X_sim.show()

输出

^{pr2}$

下面的代码

udf_foonp = udf(lambda x, y:  np.exp(-x.squared_distance(y)/2.0), DoubleType())
X_simnp = X_df.withColumn("sim", udf_foonp(X_df.x, X_df.y))

X_simnp.show()

给出一个错误

expected zero arguments for construction of ClassDict

Tags: lambda函数numpydffooshowsimdistance

热门问题