【发布时间】:2018-11-22 01:47:12
【问题描述】:
我创建了这个柯里化函数来检查 udf 中 endDateStr 的空值,代码如下:(col x 的类型是 ArrayType[TimestampType]):
def _getCountAll(dates: Seq[Timestamp]) = Option(dates).map(_.length)
def _getCountFiltered(endDate: Timestamp)(dates: Seq[Timestamp]) = Option(dates).map(_.count(!_.after(endDate)))
val getCountUDF = udf((endDateStr: Option[String]) => {
endDateStr match {
case None => _getCountAll _
case Some(value) => _getCountFiltered(Timestamp.valueOf(value + " 23:59:59")) _
}
})
df.withColumn("distinct_dx_count", getCountUDF(lit("2009-09-10"))(col("x")))
但是我在执行时遇到了这个异常:
java.lang.UnsupportedOperationException:类型的架构 Seq[java.sql.Timestamp] => Option[Int] 不支持
谁能帮我找出我的错误?
【问题讨论】:
标签: scala apache-spark