gpt4 book ai didi

sql - 使用 Spark DataFrame 获取一组后所有组的 TopN

转载 作者:行者123 更新时间:2023-12-04 02:58:29 26 4
gpt4 key购买 nike

我有一个 Spark SQL 数据帧:

user1 item1 rating1
user1 item2 rating2
user1 item3 rating3
user2 item1 rating4
...

如何按用户分组然后返回 TopN使用 Scala 的每个组的项目?

使用 Python 的相似代码:
df.groupby("user").apply(the_func_get_TopN)

最佳答案

您可以使用 rank窗口函数如下

import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions.{rank, desc}

val n: Int = ???

// Window definition
val w = Window.partitionBy($"user").orderBy(desc("rating"))

// Filter
df.withColumn("rank", rank.over(w)).where($"rank" <= n)

如果你不在乎领带,那么你可以替换 rankrow_number

关于sql - 使用 Spark DataFrame 获取一组后所有组的 TopN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33655467/

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