【问题标题】:lambda or not in PySpark UDFPySpark UDF 中是否存在 lambda
【发布时间】:2018-07-15 07:51:58
【问题描述】:

在 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))

没有 lambda,我试过这个:

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

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

【问题讨论】:

    标签: lambda pyspark


    【解决方案1】:

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

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

    但是,如果您不重复使用表达式,那么每次都编写函数可能会很麻烦。使用 lambda,您可以编写一个没有任何函数定义的匿名函数。在许多情况下,编写 lambda 表达式可以很简洁。

    因此,根据您是否重复使用表达式,您可以选择任何一种方式。

    【讨论】:

    • 感谢您的评论。很高兴看到这里。
    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 2021-07-06
    • 1970-01-01
    • 2017-07-21
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多