栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在pyspark中检索每个DataFrame组中的前n个

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在pyspark中检索每个DataFrame组中的前n个

我相信您需要使用窗口函数基于

user_id
和来获得每一行的排名
score
,然后过滤结果以仅保留前两个值。

from pyspark.sql.window import Windowfrom pyspark.sql.functions import rank, colwindow = Window.partitionBy(df['user_id']).orderBy(df['score'].desc())df.select('*', rank().over(window).alias('rank'))   .filter(col('rank') <= 2)   .show() #+-------+---------+-----+----+#|user_id|object_id|score|rank|#+-------+---------+-----+----+#| user_1| object_1|    3|   1|#| user_1| object_2|    2|   2|#| user_2| object_2|    6|   1|#| user_2| object_1|    5|   2|#+-------+---------+-----+----+

通常,官方编程指南是开始学习Spark的好地方。

数据

rdd = sc.parallelize([("user_1",  "object_1",  3), ("user_1",  "object_2",  2), ("user_2",  "object_1",  5), ("user_2",  "object_2",  2), ("user_2",  "object_2",  6)])df = sqlContext.createDataframe(rdd, ["user_id", "object_id", "score"])


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/637600.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号