【发布时间】:2019-01-16 11:20:40
【问题描述】:
编写以下 UDF 旨在使其处理未定义参数的情况。 下面是代码:
val addTimeFromCols: UserDefinedFunction = udf((year: String, month: String, day: String, hour: String) => {
Option(hour) match {
case None => (List(year, month, day).mkString(DASH_SEP)).concat(SPACE).concat(defaultHour)
case Some(x) => (List(year, month, day).mkString(DASH_SEP)).concat(SPACE).concat(hour)
}
})
def addTimestampFromFileCols(): DataFrame = df
.withColumn(COLUMN_TS, addTimeFromCols(col(COLUMN_YEAR), col(COLUMN_MONTH), col(COLUMN_DAY), col(COLUMN_HOUR)).cast(TimestampType))
我的目标是使此功能适用于所有用例(具有 HOUR 列的数据框和其他没有此列的数据框,在这种情况下,我默认定义一个值。不幸的是,当我再次测试没有列的数据框我收到以下错误:
cannot resolve '`HOUR`' given input columns
请知道如何解决这个问题
【问题讨论】:
标签: scala apache-spark user-defined-functions option