#scala #apache-spark #databricks
#scala #apache-spark #блоки данных
Вопрос:
Я определил такую переменную в моем блокноте Scala.
import java.time.{LocalDate, LocalDateTime, ZoneId, ZoneOffset, Duration}
val fiscalYearStartDate = LocalDate.of(fiscalStartYear,7,1);
Я хотел бы добавить это в качестве столбца в мой фрейм данных.
SomeDF.lit(fiscalYearStartDate ).cast("date").as("fiscalYearStartDate")
Это выдает ошибку.
java.lang.RuntimeException: неподдерживаемый класс типа литерала java.time.LocalDate 2020-10-01
Комментарии:
1. попробуйте ввести строку и привести ее как дату
2. @Lamanus , да, это сработало!!
Ответ №1:
Эквивалентным типом даты Spark SQL в Scala является java.sql.Date, и в результате решение может быть на:
val finalDF = SomeDF.withColumn("fiscalYearStartDate", lit(fiscalYearStartDate.toString).cast("Date"))
или
val finalDF = SomeDF.withColumn("fiscalYearStartDate", lit(fiscalYearStartDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")).cast("Date"))
или
import java.sql.Date
val finalDF = SomeDF.withColumn("fiscalYearStartDate", lit(Date.valueOf(fiscalYearStartDate)))