【发布时间】:2021-05-25 09:25:47
【问题描述】:
我正在 Scala 中编写 Spark 批处理作业,需要过滤数据框(“driverTable”,列“date”),以便仅保留 2 年前以下的日期(丢弃所有其他列)。
val dayList: Seq[Date] = driverTable
.select("date")
.as[Date]
.distinct
.filter(s"date <= ... ")
.collect()
.sortBy(_.getTime)
.toSeq
driverTable:org.apache.spark.sql.DataFrame = [流名:字符串,日期:日期]
“日期”是 java.sql.Date 格式。
如何填写 .filter?所以,如果今天是 2021 年 5 月 25 日,那么我需要过滤 2019 年 5 月 25 日之前的所有日子。如果 2 月 29 日,那么 2 年前的 2 月 28 日就是阈值。
【问题讨论】:
-
使用一个新的日期对象并从中减去 2 年,该日期对象有一个内置函数。你可以使用你的过滤器的输出。您可能需要应用日期格式。
-
那个收集看起来很可疑......
-
@thebluephanton 怎么来的?
-
这里的
date格式是什么?你使用java.sql.Date、java.util.Date还是别的什么?您能否编辑问题文本以提供“日期”列的示例值?
标签: scala apache-spark