gpt4 book ai didi

python - 如何将参数传递给用户定义的函数?

转载 作者:太空狗 更新时间:2023-10-30 02:38:21 25 4
gpt4 key购买 nike

我有一个用户定义的函数:

calc = udf(calculate, FloatType())

param1 = "A"

result = df.withColumn('col1', calc(col('type'), col('pos'))).groupBy('pk').sum('events')

def calculate(type, pos):
if param1=="A":
a, b = [ 0.05, -0.06 ]
else:
a, b = [ 0.15, -0.16 ]
return a * math.pow(type, b) * max(pos, 1)

我需要将参数 param1 传递给此 udf。我该怎么做?

最佳答案

您可以使用 littypedLit 作为您的 udf 的参数,如下所示:

在 Python 中:

from pyspark.sql.functions import udf, col, lit
mult = udf(lambda value, multiplier: value * multiplier)
df = spark.sparkContext.parallelize([(1,),(2,),(3,)]).toDF()
df.select(mult(col("_1"), lit(3)))

在 Scala 中:

import org.apache.spark.sql.functions.{udf, col, lit}
val mult = udf((value: Double, multiplier: Double) => value * multiplier)
val df = sparkContext.parallelize((1 to 10)).toDF
df.select(mult(col("value"), lit(3)))

关于python - 如何将参数传递给用户定义的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47260999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com