Scala Spark中的自定义日期格式比较

Scala Spark中的自定义日期格式比较,scala,date,apache-spark,apache-spark-sql,Scala,Date,Apache Spark,Apache Spark Sql,如果输入数据的格式不同,如何在Spark中按日期进行过滤 我的数据格式为dd-MMM-yy格式 例:1998年1月31日 这就是我正在尝试的: val filteredDate = ZonedDateTime.now().minusMonths(monthsToFilter).toString() dataframe.filter(to_date(from_unixtime(unix_timestamp(col(columnName),"dd-M-yy"))).gt(lit(filteredD

如果输入数据的格式不同,如何在Spark中按日期进行过滤

我的数据格式为
dd-MMM-yy
格式
例:
1998年1月31日

这就是我正在尝试的:

val filteredDate  = ZonedDateTime.now().minusMonths(monthsToFilter).toString()
dataframe.filter(to_date(from_unixtime(unix_timestamp(col(columnName),"dd-M-yy"))).gt(lit(filteredDate)))

即使有数据,过滤后的数据也是空的。

这是一个有效的解决方案。也许可以变得更干净。我很高兴知道这是否可以简化

  override def filterByDate(dataframe: DataFrame,dateFormat: String, columnName: String, monthsToFilter: Int) ): DataFrame = {
    val filteredDate = ZonedDateTime.now().minusMonths(monthsToFilter).toString()
    dataframe.filter(to_date(from_unixtime(unix_timestamp(col(columnName), dateFormat))).gt(to_date(lit(filteredDate))))
  }

您是否正在使用spark read api从csv加载数据?你提到时间格式了吗?没有…没有使用时间格式,我在多个位置重复使用csv读取功能,我不想在那里指定格式。我有多种不同格式的csv数据集