Я хочу сортировать свои К, V кортежей по V, т. Е. По значению. Я знаю, что TakeOrdered
хорош для этого, если вы знаете, сколько вам нужно:Как эффективно сортировать по значению в PySpark?
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
так лаконичен, но для этого требуется такое же количество операций, как и решение Lambda
.
Кто-нибудь знает о более простой, более сжатой трансформации в искры для сортировки по значению?