【发布时间】:2019-08-06 10:18:28
【问题描述】:
我写了下面的代码来获取通过日期的星期一日期,基本上创建了一个 udf 来传递一个日期并获取它的星期一日期
def calculate_weekstartUDF = udf((pro_rtc:String)=>{
val df = new SimpleDateFormat("yyyy-MM-dd").parse(pro_rtc)
val cal = Calendar.getInstance()
cal.setTime(df)
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY)
//Get this Monday date
val Period=cal.getTime()
})
在下面的代码中使用上面的 UDF
flattendedJSON.withColumn("weekstartdate",calculate_weekstartUDF($"pro_rtc")).show()
有没有更好的方法来实现这一点。
【问题讨论】:
-
你能发布确切的日期格式吗?
-
是的,当然有更好的方法(至少一个)。我建议你不要使用
SimpleDateFormat和Calendar。这些类设计不佳且早已过时,尤其是前者,尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time API 的LocalDate和DateTimeFormatter。
标签: scala date apache-spark user-defined-functions