如何在scala中向sqlContext UDF注册函数?
我有一个名为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类型的值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- WebService大讲堂之Axis2(2):复合类型数据的传
- scala – 如何将RDD [Row]转换为RDD [String]
- Angular 2 HTTP请求:TypeError:backend.create
- 当我需要其他时,BASH脚本期待
- Angular2如何独立于html基本URL设置应用程序根路
- 2.自己写WebService提供Add和getStudent服务。
- angularjs – 间隔函数,当角度控制器初始化时执行
- 什么是具有嵌套下拉选项(如angular1)的材质设计a
- angularjs初识
- Bash For Loop Examples for Your Linux Shell S