Ich habe eine große Menge von Daten, die ich Clustering durchführen möchte. Der Catch ist, ich möchte kein Clustering für das ganze Set, sondern ein Clustering für jeden Benutzer. Im Wesentlichen würde ich zuerst eine groupby-Benutzer-ID erstellen und dann KMeans ausführen.Wie führe ich RDD-Operationen nach einer groupby in Spark aus?
Das Problem ist, wenn Sie eine Groupby tun, würde jede Zuordnung außerhalb des Spark Controller-Kontexts sein, so dass jeder Versuch, RDDs zu erstellen, fehlschlagen würde. Sparks KMeans lib in mllib benötigt eine RDD (damit sie parallelisiert werden kann).
Ich sehe zwei Problemumgehungen, aber ich hatte gehofft, dass es eine bessere Lösung gab.
1) Manuelles Durchlaufen aller Tausenden von Benutzern in der Steuerung (vielleicht Millionen, wenn die Dinge groß werden) und Ausführen von KMeans für jede von ihnen.
2) Führen Sie groupby im Controller aus, und führen Sie dann in map einen nicht parallelen Kmeans aus, der von einer externen Bibliothek bereitgestellt wird.
Bitte sagen Sie mir, es gibt einen anderen Weg, ich hätte lieber alles || wie möglich.
Was ist der Typ von userList? Array? Ich versuche, die "Par" -Methode zu finden –
userList ist ein lokaler Scala-Iterator (Array, Liste, Seq, ...) –
Hmm, so ist Teil der Spark API? Wie hängt es mit einem nativen Scala-Typ zusammen? Das nächste, was ich in den Dokumenten finden kann, ist var rdd = sc.parallelize (data); was nicht dasselbe tut, was du hier sagst. Können Sie auf eine Doc-Seite darüber zeigen? –