lambda是否在PySpark UDF中

lambda是否在PySpark UDF中,lambda,pyspark,Lambda,Pyspark,在PySpark中使用lamdba函数有什么好处?以下是一个例子: def square(x): return float(x**2) 对于lambda,我尝试了以下方法: f_square = udf(lambda x: square(x), FloatType()) result_w_square = result.withColumn('square', f_square(result.x)) f_square = udf(square, FloatType()) result

在PySpark中使用lamdba函数有什么好处?以下是一个例子:

def square(x):
    return float(x**2)
对于lambda,我尝试了以下方法:

f_square = udf(lambda x: square(x), FloatType())
result_w_square = result.withColumn('square', f_square(result.x))
f_square = udf(square, FloatType())
result_w_square2 = result.withColumn('square', f_square(result.x))
没有lambda,我尝试了以下方法:

f_square = udf(lambda x: square(x), FloatType())
result_w_square = result.withColumn('square', f_square(result.x))
f_square = udf(square, FloatType())
result_w_square2 = result.withColumn('square', f_square(result.x))

我得到了同样的结果。哪种方法更好?

withColumn和其他Spark Python API函数旨在采用Python表达式在远程机器上运行相同的表达式

但是,Python函数只能将对象作为参数而不是表达式。要将表达式作为对象处理,唯一的方法是编写包含表达式的函数。在Python中,函数是第一类对象

但是,如果不重用表达式,每次编写函数都会很麻烦。使用lambda,您可以编写匿名函数,而无需任何函数定义。在许多情况下,编写lambda表达式可以很简洁

因此,根据是否重用表达式,您可以选择其中一种方式