我想按值对K/V对进行排序,然后取最大的五个值。我设法用第一个映射恢复K/V,用FALSE按降序排序,然后将key.value反转到原始(第二个映射),然后取前5个是bigget,代码是这样的:RDD.map(lambdax:(x[1],x[0])).sortByKey(False).map(lambdax:(x[1],x[0])).take(5)我知道pySpark上有一个takeOrdered操作,但我只设法对值(而不是键)进行排序,我不知道如何进行降序排序:RDD.takeOrdered(5,key=lambdax:x[1]) 最佳答案
我想按值对K/V对进行排序,然后取最大的五个值。我设法用第一个映射恢复K/V,用FALSE按降序排序,然后将key.value反转到原始(第二个映射),然后取前5个是bigget,代码是这样的:RDD.map(lambdax:(x[1],x[0])).sortByKey(False).map(lambdax:(x[1],x[0])).take(5)我知道pySpark上有一个takeOrdered操作,但我只设法对值(而不是键)进行排序,我不知道如何进行降序排序:RDD.takeOrdered(5,key=lambdax:x[1]) 最佳答案
当我尝试获取前3个元素时它工作正常,但按相反的顺序它不起作用sc.textFile("/user/sachinkerala6174/inData/movieStat").takeOrdered(3)上面的语句没问题当尝试下面的命令时出错sc.textFile("/user/sachinkerala6174/inData/movieStat").takeOrdered(3,key=lambdax:-x)输入数据196538812509491865389171774222118788871162441288060692316631886397596298448841828061152288