我有一个包含一个 DateTime 列和许多其他列的数据框。
我想做的就是解析这个 DateTime 列值并检查格式是否为"yyyy-MM-dd HH:mm:ss"
。如果是这样,那么我希望这些有效记录位于一个数据框中。
如果 DateTime 列包含格式以外的任何值"yyyy-MM-dd HH:mm:ss"
。我想要其他数据框中的那些无效记录。
Thanks.
您可以使用filter()
得到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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)