我要走了
java.lang.unsupportedoperationexception:不支持range.value类型的架构。
谢谢你的指点
object Range extends Enumeration {
type Range = Value
val RangeMedium = Value("Range Medium")
val RangeHigh = Value("Range Higher")
val RangeNotEnough = Value("Range Not enough")
val NotApplicable = Value("Not Applicable")
}
val getRange = udf((p1: Double, p2: Double) => {
if (p1 >= 5 && p1 < 10 && p2 >= 1) {
Some(Range.RangeMedium)
}
else if (p1 >= 10 && p2 >= 1) {
Some(Range.RangeHigh)
}
else {
Some(Range.NotApplicable)
}
})
ds = Seq(9,10).toDF("p1","p2")
ds.withColumn("level",getRange($"p1",$"p2")).show()
1条答案
按热度按时间wj8zmpe11#
如果要从udf返回字符串,可以尝试使用
.toString
:尽管如此,这种操作也可以使用
when
语句而不是udf,后者应该更有效。