takeOrdered下降Pyspark

arj*_*arj 27 python apache-spark

我想按值对K/V对进行排序,然后取最大的五个值.我设法用第一个地图恢复K/V,用FALSE降序排序,然后将key.value反转到原始(第二个地图),然后取前面的5个bigget,代码是这样的:

RDD.map(lambda x:(x[1],x[0])).sortByKey(False).map(lambda x:(x[1],x[0])).take(5)
Run Code Online (Sandbox Code Playgroud)

我知道pySpark上有一个takeOrdered动作,但我只设法对值进行排序(而不是键),我不知道如何进行降序排序:

RDD.takeOrdered(5,key = lambda x: x[1])
Run Code Online (Sandbox Code Playgroud)

aat*_*shk 69

按键排序(升序):

RDD.takeOrdered(5, key = lambda x: x[0])
Run Code Online (Sandbox Code Playgroud)

按键排序(降序):

RDD.takeOrdered(5, key = lambda x: -x[0])
Run Code Online (Sandbox Code Playgroud)

按值排序(升序):

RDD.takeOrdered(5, key = lambda x: x[1])
Run Code Online (Sandbox Code Playgroud)

按值排序(降序):

RDD.takeOrdered(5, key = lambda x: -x[1])
Run Code Online (Sandbox Code Playgroud)