【发布时间】:2020-03-04 16:16:52
【问题描述】:
假设我有以下代码:
val option: Option[String] = ??? // May be some or none
val validation: Boolean = ??? // May be true or false
val df = ??? // load data
现在我想添加两个新列:
- 第一个是基于布尔值的列
-
第二个基于 when-otherwise 子句。当上一个 列是真的,我只是放了一个
lit(3)值。当它是假的时,我打电话给 一个函数,应该在选项值时抛出异常 不存在:def dealWithOtherwise(maybeString: Option[String]): Column = { maybeString match { case Some(default) => lit(default) case None => throw new Exception() } } df .withColumn("validationIsOk", validation) .withColumn("field", when(col("validationIsOk"), lit(3)).otherwise(dealWithOtherwise(option)) )
我想在option = None 和validation = false 时抛出异常。但是,当验证为真且默认选项为无时,我会抛出异常。就像 else 函数总是为每一行执行,无论 when 子句中的条件如何。
谢谢。
【问题讨论】:
标签: apache-spark apache-spark-sql