Я предлагаю использовать пользовательскую функцию (UDF).
Вот пример:
Тестовый фрейм данных
val someDF = Seq(
("11/16/18", "Aus"),
("15/16/18", "Pak"),
("11/16/18", "New")
).toDF("TakeoffDate", "Place")
UDF
import org.apache.spark.sql.functions.udf
def isValidDate = udf((A: String) => {
val DATE_TIME_FORMAT = "MM/dd/yy"
try{
java.time.LocalDate.parse(A, java.time.format.DateTimeFormatter.ofPattern(DATE_TIME_FORMAT))
true
} catch {
case ex: java.time.format.DateTimeParseException =>
false
}
})
Обратите внимание, что я использую LocalDate
вместо LocalDateTime
.
Использование:
someDF.withColumn("IsValidDate", isValidDate(someDF("TakeoffDate"))).show()
Результат:
+-----------+-----+-----------+
|TakeoffDate|Place|IsValidDate|
+-----------+-----+-----------+
| 11/16/18| Aus| true|
| 15/16/18| Pak| false|
| 11/16/18| New| true|
+-----------+-----+-----------+
Надеюсь, это поможет.
Привет.