假设我的键不是简单数据类型而是类,我需要使用比较函数对键进行排序。在 Scala 中,我可以通过使用 new Ordering
来做到这一点。如何在 Python 中实现相同的功能?例如,Python 中的等效代码是什么?
implicit val someClassOrdering = new Ordering[SomeClass] {
override def compare(a: SomeClass, b: SomeClass) = a.compare(b)
}
最佳答案
你可以传递keyfunc
参数:
from numpy.random import seed, randint
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
seed(1)
rdd = sc.parallelize(
(Point(randint(10), randint(10)), randint(100)) for _ in range(5))
现在,假设您想按 y 坐标对点进行排序:
rdd.sortByKey(keyfunc=lambda p: p.y).collect()
结果是:
[(Point(x=5, y=0), 16),
(Point(x=9, y=2), 20),
(Point(x=5, y=2), 84),
(Point(x=1, y=7), 6),
(Point(x=5, y=8), 9)]
关于python - RDD.sortByKey 在 python 中使用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31187844/