PySpark实战:takeOrdered操作

来自CloudWiki
跳转至: 导航搜索

介绍

takeOrdered操作是一个变换算子,

它的作用是从RDD中获取排序后的前num个元素构成的RDD

默认按照升序排,但是也支持用可选函数进行指定。

此操作可适用于相关的TopN问题。

代码

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))
#[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
print(rdd.takeOrdered(10))
#[99, 98, 97, 96, 95, 94, 93, 92, 91, 90]
print(rdd.takeOrdered(10, key=lambda x: -x))
##############################################
sc.stop()

输出

[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

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