gpt4 book ai didi

python - 如何在 PySpark 中有效地按值排序?

转载 作者:太空狗 更新时间:2023-10-30 00:29:24 24 4
gpt4 key购买 nike

我想按 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 如此简洁,但它需要与 Lambda 解决方案相同数量的操作。

有谁知道 spark 中按值排序的更简单、更简洁的转换?

最佳答案

我认为 sortBy() 更简洁:

b = sc.parallelize([('t', 3),('b', 4),('c', 1)])
bSorted = b.sortBy(lambda a: a[1])
bSorted.collect()
...
[('c', 1),('t', 3),('b', 4)]

实际上是not more efficient at all因为它涉及按值键入,按键排序,然后获取值,但它看起来比后一种解决方案更漂亮。在效率方面,我不认为你会找到更有效的解决方案,因为你需要一种方法来转换你的数据,以便将值作为你的键(然后最终将该数据转换回原始模式)。

关于python - 如何在 PySpark 中有效地按值排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33706408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com