Получить одну строку с максимальной датой в Spark Scala

#scala #apache-spark

#scala #apache-spark

Вопрос:

Я не могу поверить, что должен спросить об этом, но все ответы, которые я ищу, основаны на группировке по другим значениям и агрегатам. У меня есть фрейм данных с одним столбцом, и это просто даты типа Spark date. Я хочу самую последнюю дату и вернуть ее драйверу.

 ------------
|  MyDate  |
------------
|2020-10-01|
|2020-10-02|
|2020-10-02|
------------
 

Я пробовал:
df.groupBy("MyDate").agg(max("MyDate") as "max_date")

Но это просто дублирует данные во второй столбец.

Я знаю, что это глупо просто, но я не могу найти ответ.

Ответ №1:

просто используйте select max функцию with, как в обычном SQL:

 import org.apache.spark.sql.functions._
import spark.implicits._

Seq(
  "2020-10-01",
  "2020-10-06",
  "2020-10-03"
).toDF("date")
  .select(max(col("date")).name("max_date"))
  .show()

/*
 ---------- 
|  max_date|
 ---------- 
|2020-10-06|
 ---------- 
*/