我在python Spark中有一个用户定义的函数:
result = udf(lambda num1, num2: (num1 - num2) / math.sqrt(1-(num1/num2)), FloatType())
我想添加一个num1/num2
大于1的检查。如果它小于1,那么num1
应该等于num2
。你知道吗
if (num1/num2 > 1):
num1 = num2
如何将这个简单的检查添加到udf
表达式中?你知道吗
我试过了,但似乎失败了:
def calculate(num1, num2):
if (num1/num2 > 1):
num1 = num2
result = (num1 - num2) / math.sqrt(1-(num1/num2))
return result
calc_z = udf(lambda num1, num2: calculate, FloatType())
您可以使用where函数获得如下结果
与其使用自定义项,不如使用可用函数。你知道吗
如果你还想使用自定义项,你可以注册你的自定义项以上作为
希望这有帮助!你知道吗
如果将
num1
替换为:(num2 if num1/num2 > 1 else num1)
您的lambda正在返回一个尚未调用的函数。试试这个。你知道吗
相关问题 更多 >
编程相关推荐