【发布时间】:2020-12-22 11:54:35
【问题描述】:
我读到在大多数情况下都不需要为 udf 指定返回类型,但如果您添加 return 语句,则有必要。
我有以下 udf,它在内部迭代一个列表,如果匹配,我希望 udf 立即返回。根据我在这里找到的其他答案,我尝试了以下两种方法来定义返回类型:
def removeSalutation = udf((name: String) => String {
val salutationList = List("MRS", "MR", "MSTR", "MISS", "MS", "DR")
for(salutation <- salutationList){
if(name.endsWith(salutation)){
return name.dropRight(salutation.length())
}
}
return name
})
上面的脚本只是返回一个错误
def removeSalutation = udf[String, String]((name: String) => {
val salutationList = List("MRS", "MR", "MSTR", "MISS", "MS", "DR")
for(salutation <- salutationList){
if(name.endsWith(salutation)){
return name.dropRight(salutation.length())
}
}
return name
})
上面的脚本一直在说:
错误:方法 removeSalutation 有返回语句;需要结果类型
指定返回类型的正确方法是什么?
【问题讨论】:
标签: scala apache-spark user-defined-functions