RozważmyZamawianie RDD [ciąg]
val animals = List("penguin","ferret","cat").toSeq
val rdd = sc.makeRDD(animals, 1)
Chciałbym zamówić RDD. Jestem nowy w Scali i trochę zdezorientowany, jak to zrobić.
RozważmyZamawianie RDD [ciąg]
val animals = List("penguin","ferret","cat").toSeq
val rdd = sc.makeRDD(animals, 1)
Chciałbym zamówić RDD. Jestem nowy w Scali i trochę zdezorientowany, jak to zrobić.
Dokumentacja RDD znajduje się pod numerem . Spójrz na sortBy
:
sortBy[K](
f: (T) ⇒ K,
ascending: Boolean = true,
numPartitions: Int = this.partitions.size
)
K
jest typem fragmencie z RDD jesteś sortowania wg. f
to funkcja, którą możesz zdefiniować gdzie indziej przy pomocy def
i przekazać ją według nazwy lub możesz utworzyć anonimowo w linii (która jest bardziej scala-podobna). ascending
i numPartitions
powinny być zrozumiałe.
Więc biorąc pod uwagę to wszystko, spróbuj:
rdd.sortBy[String]({animal => animal})
Następnie spróbuj tego:
rdd.sortBy[String]({animal => animal}, false)
I wtedy ten, który sortuje RDD przez liczbę liter „e” w nazwie zwierzę, od najbardziej do najmniej:
rdd.sortBy[Int]({a => a.split("").filter(char => char == "e").size}, false)
należy zauważyć, że oryginalny rdd
nie jest posortowana - nowy, posortowany RDD jest zwracany przez operację.
W pierwszym przypadku zwracamy tylko to, co podajemy, ale przestrzegamy kolejności alfabetycznej, dlaczego tak jest? Co to ma wspólnego z ukrytym zamawianiem [K]? – Chris
Następuje domyślne porządkowanie [K], gdzie K jest takie samo jak K w sortBy [K]. Możesz zastąpić Ordering [K] Wierzę, ale nigdy nie miałem takiej potrzeby. –
Wygląda na to, że możesz w tym przypadku zupełnie pominąć anonimową funkcję? To część tego, co mnie myli, ale rozumiem, co wyłożyłeś i było bardzo pomocne. – Chris
Nie mam żadnej wiedzy na temat iskry, ale może to jest twoja odpowiedź: http://apache-spark-user-list.1001560.n3.nabble.com/How-to-sort-an-RDD-td1922.html – MeiSign