gpt4 book ai didi

scala - 如何在 scala 中将函数注册到 sqlContext UDF?

转载 作者:行者123 更新时间:2023-12-01 19:34:10 26 4
gpt4 key购买 nike

我有一个名为 getAge(timestamp:Long) 的方法,我想将其注册为 sql 函数。

我有

sqlContext.udf.register("getAge",getAge) 

但它告诉我我需要参数或之后使用_,我尝试使用_但给了我错误。我如何用参数注册它。我是 Scala 新手,所以我不知道如何做到这一点。

最佳答案

sqlContext.udf.register("getAge",getAge) 

应该是:

sqlContext.udf.register("getAge",getAge _)

下划线(函数和下划线之间必须有一个空格)将函数转换为可以在注册中传递的部分应用函数。

更多说明

当我们调用函数时,我们必须传入所有必需的参数。如果我们不这样做,编译器就会提示。

但是,我们可以要求它提供函数作为值,稍后我们可以使用该值传递所需的参数。我们如何做到这一点是使用下划线。

getAge 表示运行 getAge - 例如,def getAge = 10 为我们提供 10。我们想要的不是结果,而是函数。此外,根据您的定义,编译器发现 getAge 需要一个参数,并提示没有给出该参数。

我们在这里要做的是将 getAge 作为函数值传递。我们告诉 Scala,我们还不知道参数,我们希望函数作为一个值,稍后我们将向它提供所需的参数。因此,我们使用getAge _

假设 getAge 的签名是:

getAge(l: Long): Long = <function>

getAge _ 成为匿名函数:

Long => Long = <function>

这意味着它需要一个Long类型的参数,并且调用它的结果将产生一个Long类型的值。

关于scala - 如何在 scala 中将函数注册到 sqlContext UDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31278110/

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