在Pyspark中排序元组列表

时间:2016-06-06 13:06:50

标签: pyspark

我有一组元组键,值对看起来像这样:

X=[(('cat','mouse'),1),(('dog','rat'),20),(('hamster','skittles),67)]

我想按元组中第二项的顺序排序。我会习惯用Python:

sorted(X, key=lambda tup:tup[1])

我也希望获得具有最高值的键值对,再次,pythonically这将是简单的:

max_X=max(x[1] for x in X)
max_tuple=[x for x in X if x[1]==max_X
然而,我不知道如何将其转化为火花工作。

2 个答案:

答案 0 :(得分:1)

X.max(lambda x: x[1])

你也可以采用另一种方式,如果你需要对RDD进行排序,这可能会更快。但是,如果您不需要对RDD进行排序,这会更慢,因为排序所需的时间比告诉它找到最大值要长(因此,在真空中,使用max函数)。

X.sortBy(lambda x: x[1], False).first()

这将按照您之前的操作进行排序,但添加False将按降序对其进行排序。然后你拿第一个,这将是最大的。

答案 1 :(得分:0)

自发布以来的2分钟内弄清楚了!

X.sortBy(lambda x:x[1]).collect()