【发布时间】:2018-08-31 01:11:29
【问题描述】:
我在函数中有一个 DateType 输入。如果输入日期在周末,我想排除周六和周日并获得下一周的日期,否则应该给出第二天的日期
示例: 输入:2017 年 1 月 1 日星期一输出:2017 年 1 月 2 日(星期二) 输入:2017 年 3 月 4 日星期六输出:2017 年 3 月 5 日(星期一)
我已经通过https://spark.apache.org/docs/2.0.2/api/java/org/apache/spark/sql/functions.html,但我没有看到现成的功能,所以我认为需要创建它。
到目前为止,我有一些东西是:
val nextWeekDate = udf {(startDate: DateType) =>
val day= date_format(startDate,'E'
if(day=='Sat' or day=='Sun'){
nextWeekDate = next_day(startDate,'Mon')
}
else{
nextWeekDate = date_add(startDate, 1)
}
}
需要帮助才能使其有效和工作。
【问题讨论】:
-
你的逻辑很好,但是你需要使用
when()和otherwise()而不是if和else。这是编写 Spark 代码时的常见错误。请参阅我的答案以了解您的逻辑的功能版本。
标签: scala spark-dataframe