我尝试将UDF注册到sqlContext(在本地模式下运行spark)
这是定义:
const result = _.shuffle('my_string');
这应该是一个函数的简单注册。 获得以下例外:
scala> def getStr=udf((s:String) => {val lastS=s.substring(s.lastIndexOf('/')+1); lastS})
getStr: org.apache.spark.sql.UserDefinedFunction
scala> sqlContext.udf.register("getStr", getStr _)
......等等。 有什么帮助吗?
答案 0 :(得分:1)
我错过了导入org.apache.spark.sql.functions._。它现在已经解决了。
答案 1 :(得分:0)
UDFRegistration.register
只有两个主要变体可用于标准(非聚合)UDF:
Function[i]
),其中i
从0到22 UDF[i]
设计用于Java互操作性的i
,其中getStr
从1到22 UserDefinedFunction
为register
,因此它们都不匹配。为了能够正确地sqlContext.udf.register("getStr", (s:String) => ...)
包裹函数,您应该直接传递它:
{{1}}