小编Álv*_*cia的帖子

具有多个参数的 PySpark UDF 返回 null

我有一个 PySpark Dataframe,有两列(A, B,其类型为double),其值为0.01.0。我正在尝试添加一个新列,它是这两列的总和。我遵循Pyspark 中的示例:Pass multiple columns in UDF

import pyspark.sql.functions as F
from pyspark.sql.types import IntegerType, StringType
sum_cols = F.udf(lambda x: x[0]+x[1], IntegerType())
df_with_sum = df.withColumn('SUM_COL',sum_cols(F.array('A','B')))
df_with_sum.select(['SUM_COL']).toPandas()
Run Code Online (Sandbox Code Playgroud)

这显示了一系列NULLs 而不是我期望的结果。

我尝试了以下任一方法来查看数据类型是否存在问题

sum_cols = F.udf(lambda x: x[0], IntegerType())
sum_cols = F.udf(lambda x: int(x[0]), IntegerType())
Run Code Online (Sandbox Code Playgroud)

仍然得到空值。

我尝试删除数组:

sum_cols = F.udf(lambda x: x, IntegerType())
df_with_sum = df.withColumn('SUM_COL',sum_cols(df.A))
Run Code Online (Sandbox Code Playgroud)

这工作正常并显示0/1

我尝试删除 UDF,但保留数组:

df_with_sum = df.withColumn('SUM_COL', F.array('A','B'))
Run Code Online (Sandbox Code Playgroud)

这工作正常并显示一系列数组[0.0/1.0, 0.0/1.0]

因此,数组工作正常,UDF 工作正常,只是当我尝试将数组传递给 UDF …

dataframe apache-spark pyspark

5
推荐指数
1
解决办法
6735
查看次数

标签 统计

apache-spark ×1

dataframe ×1

pyspark ×1