我有一组元组键,值对看起来像这样:
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
然而,我不知道如何将其转化为火花工作。
答案 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()