gpt4 book ai didi

apache-spark-sql - 从 Spark 数据框中选择最新记录

转载 作者:行者123 更新时间:2023-12-04 12:19:44 25 4
gpt4 key购买 nike

我有 DataDram 看起来像这样:

+-------+---------+
|email |timestamp|
+-------+---------+
|x@y.com| 1|
|y@m.net| 2|
|z@c.org| 3|
|x@y.com| 4|
|y@m.net| 5|
| .. | ..|
+-------+---------+

对于每封电子邮件,我都想保留最新记录,因此结果将是:
+-------+---------+
|email |timestamp|
+-------+---------+
|x@y.com| 4|
|y@m.net| 5|
|z@c.org| 3|
| .. | ..|
+-------+---------+

我怎样才能做到这一点?我是 Spark 和数据框的新手。

最佳答案

这是一个适用于 Spark SQL 的通用 ANSI SQL 查询:

SELECT email, timestamp
FROM
(
SELECT t.*, ROW_NUMBER() OVER (PARTITION BY email ORDER BY timestamp DESC) rn
FROM yourTable t
) t
WHERE rn = 1;

对于 PySpark 数据框代码,请尝试以下操作:
from pyspark.sql.window import Window

df = yourDF
.withColumn("rn", F.row_number()
.over(Window.partitionBy("email")
.orderBy(F.col("timestamp").desc())

df = df.filter(F.col("rn") == 1).drop("rn")
df.show()

关于apache-spark-sql - 从 Spark 数据框中选择最新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55615716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com