Python 如何使用过滤器获取pyspark red中前5个最大值键
我在pyspark中有这种rdd,我想要最大值的前5个键 rdd.sort'column\u name',升序=False.5Python 如何使用过滤器获取pyspark red中前5个最大值键,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我在pyspark中有这种rdd,我想要最大值的前5个键 rdd.sort'column\u name',升序=False.5 希望这对您有所帮助如果您正在使用RDD,您可以对数据进行排序并获取前5个元素 Rdd=sc.parallelize([('a',1),('b',5),('c',3),('d',7),('e',10),('f',5),('g',9)]) 然而,这可能不是很有效,尤其是在大型RDD上。您可以使用一个简单的reduce >>> Rdd.sortBy(lam
希望这对您有所帮助如果您正在使用RDD,您可以对数据进行排序并获取前5个元素
Rdd=sc.parallelize([('a',1),('b',5),('c',3),('d',7),('e',10),('f',5),('g',9)])
然而,这可能不是很有效,尤其是在大型RDD上。您可以使用一个简单的reduce
>>> Rdd.sortBy(lambda x : - x[1]).take(5)
[('e', 10), ('g', 9), ('d', 7), ('f', 5), ('b', 5)]
这仍然不是最优的,因为这将产生相当多的对象创建,但已经比排序好得多
Rdd.map(lambda x: [x])\
.reduce(lambda a,b: sorted(a + b, key = lambda x : - x[1])[:5] )