我想按照值(V)对我的K,V元组进行排序。如果您知道需要多少个元素,则可以使用TakeOrdered
。
b = sc.parallelize([('t',3),('b',4),('c',1)])
使用 TakeOrdered:
b.takeOrdered(3,lambda atuple: atuple[1])
使用Lambda
b.map(lambda aTuple: (aTuple[1], aTuple[0])).sortByKey().map(
lambda aTuple: (aTuple[0], aTuple[1])).collect()
我查看了这个问题的链接here,该链接建议使用takeOrdered
方法进行排序。我很难相信takeOrdered
如此简洁,却需要与Lambda
解决方案相同数量的操作。
有没有人知道在Spark中是否有更简单、更简洁的转换方式来按值排序?