在 PySpark 中使用
withColumn
函数,可以为一个 DataFrame 添加一列。这个函数需要两个参数,第一个参数是要添加的列名,第二个参数是该列的计算方法。计算方法可以是一个函数,也可以是一个表达式。
如果要使用 lambda 函数作为
withColumn
函数的计算方法,可以按照以下方式编写代码:
from pyspark.sql.functions import udf, col
# 定义一个 lambda 函数
my_lambda = lambda x: x * 2
# 将 lambda 函数转化为 UDF 函数
my_udf = udf(my_lambda)
# 使用 withColumn 函数添加一列,该列的值为原始列的两倍
new_df = df.withColumn('new_column', my_udf(col('old_column')))
在这个例子中,我们首先定义了一个 lambda 函数 my_lambda
,该函数接受一个参数 x
,并返回 x
的两倍。然后,我们使用 udf
函数将该 lambda 函数转化为 PySpark 中的 UDF 函数 my_udf
。最后,我们使用 withColumn
函数,将新列名 'new_column'
和计算方法 my_udf(col('old_column'))
传递给函数,从而得到一个包含新列的新 DataFrame。
需要注意的是,PySpark 中的 UDF 函数需要使用 udf
函数将普通 Python 函数转化为 Spark 可以识别的函数。在转化为 UDF 函数之前,如果直接将 lambda 函数作为计算方法传递给 withColumn
函数,会导致 Spark 无法识别该函数。因此,我们需要先将 lambda 函数转化为 UDF 函数,再将 UDF 函数传递给 withColumn
函数。