获取Pyspark Dataframe的最大值的更有效方法

时间:2016-11-27 18:06:13

标签: apache-spark pyspark

我正在尝试获取数据框列的前5个值。

下面给出了数据帧的样本。事实上,原始数据框有数千行。

Row(item_id=u'2712821', similarity=5.0)
Row(item_id=u'1728166', similarity=6.0)
Row(item_id=u'1054467', similarity=9.0)
Row(item_id=u'2788825', similarity=5.0)
Row(item_id=u'1128169', similarity=1.0)
Row(item_id=u'1053461', similarity=3.0)

我想出的解决方案是对所有数据帧进行排序,然后获取前5个值。 (下面的代码就是这样)

items_of_common_users.sort(items_of_common_users.similarity.desc()).take(5)

我想知道是否有更快的方法来实现这一目标。 感谢

1 个答案:

答案 0 :(得分:2)

您可以将RDD.top方法与key

一起使用
from operator import attrgetter

df.rdd.top(5, attrgetter("similarity"))

DataFrame转换为RDD会产生很大的开销,但它应该值得。