如何使用 Spark 获取表中的最新值



我有一个如下表:

date       | person | assignment
-----------+--------+-----------
2019-01-01 | joe    | blue
2019-02-01 | joe    | red
2019-01-01 | mel    | green
2019-03-01 | mel    | yellow
2019-02-01 | drew   | blue

我想要带有 Spark 查询的以下结果

latest     | person | assignment
-----------+--------+-----------
2019-02-01 | joe    | red
2019-03-01 | mel    | yellow
2019-02-01 | drew   | blue

我知道我可以做person, max(date) latest然后再次查询完整列表。但是有没有一种简单的方法可以使用 Spark 窗口函数来做到这一点。

df.withColumn(
    "num",
    row_number() over Window.partitionBy("person").orderBy(desc("date")))
  .filter($"num" === 1)
  .drop("num")
  .show()

最新更新