【发布时间】:2021-12-19 19:51:27
【问题描述】:
我在 Scala 中创建了一个 UDF(我与 Spark btw 一起使用),以便将字符串作为参数并输出 BeiderMorseEncoder 字符串。我正在使用 来自 Apache Commons 的 org.apache.commons.codec.language.bm.BeiderMorseEncoder Java 函数
import org.apache.commons.codec.language.bm.BeiderMorseEncoder
class BeiderMorseEncode extends UDF1[String, String] {
override def call(input: String): String = {
val m = new BeiderMorseEncoder()
m.encode(input)
}
}
object BeiderMorseEncode {
def apply(): BeiderMorseEncode = {
new BeiderMorseEncode()
}
}
效果很好! 但是我也想使用以下功能(点击查看签名)org.apache.commons.codec.language.bm.Lang.guessLanguage
如果我尝试在 Scala 中为这个函数创建一个类似的 UDF:
import org.apache.commons.codec.language.bm.Lang
class guessNameLanguage extends UDF1[String, String] {
override def call(input: String): String = {
val m = new Lang()
m.guessLanguage(input)
}
}
object guessNameLanguage {
def apply(): guessNameLanguage = {
new guessNameLanguage()
}
}
我得到了
org.apache.commons.codec.language.bm.Lang 没有构造函数
关于如何完成这项工作的任何想法?我知道我需要先实例化一个具有构造函数的对象……但是查看了类层次结构后,我看不到那将是什么对象。 (显然不是郎)
为我蹩脚的 Scala 道歉。
【问题讨论】:
标签: java scala class constructor user-defined-functions