如何验证 Spark scala 中数据框列中的日期格式

2023-11-30

我有一个包含一个 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(使用前将#替换为@)

如何验证 Spark scala 中数据框列中的日期格式 的相关文章

随机推荐