我有一个包含一个 DateTime 列和许多其他列的数据框。
我想做的就是解析这个 DateTime 列值并检查格式是否为 "yyyy-MM-dd HH:mm:ss"
。如果是这样,那么我希望将这些有效记录放在一个数据框中。
如果 DateTime 列包含格式 "yyyy-MM-dd HH:mm:ss"
以外的任何值。我想要其他数据框中的那些无效记录。
谢谢。
最佳答案
您可以使用filter()
获取dataframe 中的valid/invalid
记录。从 Scala 的角度来看,可以改进此代码。
val DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"
def validateDf(row: Row): Boolean = try {
//assume row.getString(1) with give Datetime string
java.time.LocalDateTime.parse(row.getString(1), java.time.format.DateTimeFormatter.ofPattern(DATE_TIME_FORMAT))
true
} catch {
case ex: java.time.format.DateTimeParseException => {
// Handle exception if you want
false
}
}
val session = SparkSession.builder
.appName("Validate Dataframe")
.getOrCreate
val df = session. .... //Read from any datasource
import session.implicits._ //implicits provide except() on df
val validDf = df.filter(validateDf(_))
val inValidDf = df.except(validDf)
关于scala - 如何在 spark scala 的数据框列中验证日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40509230/