2017-07-16 5 views
0

Ich bin neu zu funken und stieß auf ein Problem. Mein RDD ist alsSortieren einer Reihe von Zeichenfolgen in absteigender Reihenfolge mit TakeOrdered

names_rdd = sc.parallelize(["abc","def","ghi", "jkl","mno"]); 

folgt Ich bin verwirrt darüber, wie takeOrdered Befehl verwenden, in absteigender Reihenfolge Top-3 Worte zu erhalten. Ich erwarte die Ausgabe ["mno", "jkl", "ghi"]. Die Strings sind lexikographisch in absteigender Reihenfolge bestellt

Könnte mir jemand mit dem Problem helfen.

+0

zählen Ihr Wort als usal und dann 'yourrdd.takeOrdered (3) (Bestell [Int] .reverse.on (x => x._2))' –

+0

@ Ram Frage ist in Python –

+0

Haben Sie das gesehen? Welche Versuche haben Sie unternommen? https://StackOverflow.com/Questions/30787635/TakeOrdered-Descending-Pyspark –

Antwort

2

Eine Arbeit um,

names_rdd.takeOrdered(3,key=lambda x:-ord(x[0])) 

['mno', 'jkl', 'ghi'] 
Verwandte Themen