gpt4 book ai didi

scala - 是否可以将选项与spark UDF一起使用

转载 作者:行者123 更新时间:2023-12-02 20:58:40 25 4
gpt4 key购买 nike

我想使用 Option 作为我的函数的输入类型。

udf((oa: 选项[字符串], ob: 选项[字符串])) => …

以更实用的方式处理null值。

有办法做到这一点吗?

最佳答案

据我所知,这不可能直接实现。没有什么可以阻止您使用 Options 包装参数:

udf((oa: String, ob: String) => (Option(oa), Option(ob)) match {
...
})

使用数据集编码器:

val df = Seq(("a", None), ("b", Some("foo"))).toDF("oa", "ob")

df.as[(Option[String], Option[String])]

或添加一些隐式转换:

implicit def asOption[T](value: T) : Option[T] = Option(value)

def foo(oa: Option[String], ob: Option[String]) = {
oa.flatMap(a => ob.map(b => s"$a - $b"))
}

def wrap[T, U, V](f: (Option[T], Option[U]) => V) =
(t: T, u: U) => f(Option(t), Option(u))

val foo_ = udf(wrap(foo))
df.select(foo_($"oa", $"ob"))

关于scala - 是否可以将选项与spark UDF一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39391591/

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