如何在pyspark中使用udf函数

How to use udf functions in pyspark

我正在分析下面这段代码:

from pyspark.sql.functions import udf,col, desc    
def error(value, pred):
    return abs(value - pred)

udf_MAE = udf(lambda value, pred: MAE(value= value, pred = pred), FloatType())

我知道 udf 是用户定义的函数,但我不明白那是什么意思?因为 udf 之前没有在代码的任何地方定义?

当您需要定义特定于您的用例的逻辑以及需要封装该解决方案以供重用时,用户定义函数 (UDF) 非常有用。仅当没有明确的方法使用内置函数完成任务时才应使用它们..Azure DataBricks

创建您的函数(在您确定没有内置函数来执行类似任务后

def greatingFunc(name):
  return 'hello {name}!'

然后您需要通过指定以下内容将您的函数注册为 UDF:

用于在 Python (myGreatingUDF)

中访问的名称

函数本身 (greatingFunc)

函数的 return 类型 (StringType)

myGreatingUDF = spark.udf.register("myGreatingUDF",greatingFunc,StringType())

现在你可以随时叫你UDF了,

guest = 'John'
print(myGreatingUDF(guest))