PySpark实战:top操作-获取排名前N位

来自CloudWiki
跳转至: 导航搜索

介绍

top操作 是一个动作算子

它可以获取RDD中排序后的前n个元素

应用:解决大数据TopN问题,如销量最好的前5类产品等。

代码

import findspark
findspark.init()
##############################################
from pyspark.sql import SparkSession
spark = SparkSession.builder \
        .master("local[1]") \
        .appName("RDD Demo") \
        .getOrCreate();
sc = spark.sparkContext
#############################################
rdd =sc.parallelize(range(2,100))
#top(N)首先降序排列,并获取前N个元素
#[99, 98, 97, 96, 95, 94, 93, 92, 91, 90]
print(rdd.top(10))
#[4, 3, 20, 2, 10]
print(sc.parallelize([10,20,3,4,2]).top(10,key=str))
##############################################
sc.stop()
~

  • top操作可以接受另外一个参数key=str ,此时会按照字符串进行排序

输出

[99, 98, 97, 96, 95, 94, 93, 92, 91, 90]

[4, 3, 20, 2, 10]