【问题标题】:A more efficient way of getting the nlargest values of a Pyspark Dataframe获取 Pyspark Dataframe 的最大值的更有效方法
【发布时间】:2016-11-28 02:38:04
【问题描述】:

我正在尝试获取数据框列的前 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)

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

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    您可以将RDD.top 方法与key 一起使用:

    from operator import attrgetter
    
    df.rdd.top(5, attrgetter("similarity"))
    

    DataFrameRDD 转换的开销很大,但应该值得。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 2012-04-07
      • 1970-01-01
      • 2021-08-04
      相关资源
      最近更新 更多